// 文档 https://github.com/hooke007/MPV_lazy/wiki/4_GLSL

// 
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Lesser General Public License for more details.
// 
// You should have received a copy of the GNU Lesser General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

//!DESC [ravu_r3_rgb] (step1, rgb, r3, compute)
//!HOOK MAIN
//!BIND HOOKED
//!BIND ravu_lut3
//!SAVE ravu_int11
//!WHEN OUTPUT.w HOOKED.w 1.200 * > OUTPUT.h HOOKED.h 1.200 * > *
//!COMPUTE 32 8
const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);
shared vec3 inp0[481];
shared float inp_luma0[481];
void hook() {
ivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);
int local_pos = int(gl_LocalInvocationID.x) * 13 + int(gl_LocalInvocationID.y);
for (int id = int(gl_LocalInvocationIndex); id < 481; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {
int x = id / 13, y = id % 13;
inp0[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x+x)+(-1.5), float(group_base.y+y)+(-1.5))).xyz;
inp_luma0[id] = dot(inp0[id], color_primary);
}
barrier();
{
float luma6 = inp_luma0[local_pos + 13];
float luma7 = inp_luma0[local_pos + 14];
float luma8 = inp_luma0[local_pos + 15];
float luma9 = inp_luma0[local_pos + 16];
float luma10 = inp_luma0[local_pos + 17];
float luma11 = inp_luma0[local_pos + 18];
float luma1 = inp_luma0[local_pos + 1];
float luma12 = inp_luma0[local_pos + 26];
float luma13 = inp_luma0[local_pos + 27];
float luma14 = inp_luma0[local_pos + 28];
float luma15 = inp_luma0[local_pos + 29];
float luma2 = inp_luma0[local_pos + 2];
float luma16 = inp_luma0[local_pos + 30];
float luma17 = inp_luma0[local_pos + 31];
float luma18 = inp_luma0[local_pos + 39];
float luma3 = inp_luma0[local_pos + 3];
float luma19 = inp_luma0[local_pos + 40];
float luma20 = inp_luma0[local_pos + 41];
float luma21 = inp_luma0[local_pos + 42];
float luma22 = inp_luma0[local_pos + 43];
float luma23 = inp_luma0[local_pos + 44];
float luma4 = inp_luma0[local_pos + 4];
float luma24 = inp_luma0[local_pos + 52];
float luma25 = inp_luma0[local_pos + 53];
float luma26 = inp_luma0[local_pos + 54];
float luma27 = inp_luma0[local_pos + 55];
float luma28 = inp_luma0[local_pos + 56];
float luma29 = inp_luma0[local_pos + 57];
float luma31 = inp_luma0[local_pos + 66];
float luma32 = inp_luma0[local_pos + 67];
float luma33 = inp_luma0[local_pos + 68];
float luma34 = inp_luma0[local_pos + 69];
vec3 abd = vec3(0.0);
float gx, gy;
gx = (luma13-luma1)/2.0;
gy = (luma8-luma6)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;
gx = (luma14-luma2)/2.0;
gy = (-luma10+8.0*luma9-8.0*luma7+luma6)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma15-luma3)/2.0;
gy = (-luma11+8.0*luma10-8.0*luma8+luma7)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma16-luma4)/2.0;
gy = (luma11-luma9)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;
gx = (-luma25+8.0*luma19-8.0*luma7+luma1)/12.0;
gy = (luma14-luma12)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (-luma26+8.0*luma20-8.0*luma8+luma2)/12.0;
gy = (-luma16+8.0*luma15-8.0*luma13+luma12)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;
gx = (-luma27+8.0*luma21-8.0*luma9+luma3)/12.0;
gy = (-luma17+8.0*luma16-8.0*luma14+luma13)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;
gx = (-luma28+8.0*luma22-8.0*luma10+luma4)/12.0;
gy = (luma17-luma15)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (-luma31+8.0*luma25-8.0*luma13+luma7)/12.0;
gy = (luma20-luma18)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (-luma32+8.0*luma26-8.0*luma14+luma8)/12.0;
gy = (-luma22+8.0*luma21-8.0*luma19+luma18)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;
gx = (-luma33+8.0*luma27-8.0*luma15+luma9)/12.0;
gy = (-luma23+8.0*luma22-8.0*luma20+luma19)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;
gx = (-luma34+8.0*luma28-8.0*luma16+luma10)/12.0;
gy = (luma23-luma21)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma31-luma19)/2.0;
gy = (luma26-luma24)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;
gx = (luma32-luma20)/2.0;
gy = (-luma28+8.0*luma27-8.0*luma25+luma24)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma33-luma21)/2.0;
gy = (-luma29+8.0*luma28-8.0*luma26+luma25)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma34-luma22)/2.0;
gy = (luma29-luma27)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;
float a = abd.x, b = abd.y, d = abd.z;
float T = a + d, D = a * d - b * b;
float delta = sqrt(max(T * T / 4.0 - D, 0.0));
float L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;
float sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);
float theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);
float lambda = sqrtL1;
float mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);
float angle = floor(theta * 24.0 / 3.141592653589793);
float strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);
float coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);
float coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;
vec3 res = vec3(0.0);
vec4 w;
w = texture(ravu_lut3, vec2(0.1, coord_y));
res += (inp0[local_pos + 0] + inp0[local_pos + 70]) * w[0];
res += (inp0[local_pos + 1] + inp0[local_pos + 69]) * w[1];
res += (inp0[local_pos + 2] + inp0[local_pos + 68]) * w[2];
res += (inp0[local_pos + 3] + inp0[local_pos + 67]) * w[3];
w = texture(ravu_lut3, vec2(0.3, coord_y));
res += (inp0[local_pos + 4] + inp0[local_pos + 66]) * w[0];
res += (inp0[local_pos + 5] + inp0[local_pos + 65]) * w[1];
res += (inp0[local_pos + 13] + inp0[local_pos + 57]) * w[2];
res += (inp0[local_pos + 14] + inp0[local_pos + 56]) * w[3];
w = texture(ravu_lut3, vec2(0.5, coord_y));
res += (inp0[local_pos + 15] + inp0[local_pos + 55]) * w[0];
res += (inp0[local_pos + 16] + inp0[local_pos + 54]) * w[1];
res += (inp0[local_pos + 17] + inp0[local_pos + 53]) * w[2];
res += (inp0[local_pos + 18] + inp0[local_pos + 52]) * w[3];
w = texture(ravu_lut3, vec2(0.7, coord_y));
res += (inp0[local_pos + 26] + inp0[local_pos + 44]) * w[0];
res += (inp0[local_pos + 27] + inp0[local_pos + 43]) * w[1];
res += (inp0[local_pos + 28] + inp0[local_pos + 42]) * w[2];
res += (inp0[local_pos + 29] + inp0[local_pos + 41]) * w[3];
w = texture(ravu_lut3, vec2(0.9, coord_y));
res += (inp0[local_pos + 30] + inp0[local_pos + 40]) * w[0];
res += (inp0[local_pos + 31] + inp0[local_pos + 39]) * w[1];
res = clamp(res, 0.0, 1.0);
imageStore(out_image, ivec2(gl_GlobalInvocationID), vec4(res, 1.0));
}
}
//!DESC [ravu_r3_rgb] (step2, rgb, r3, compute)
//!HOOK MAIN
//!BIND HOOKED
//!BIND ravu_lut3
//!BIND ravu_int11
//!WIDTH 2 HOOKED.w *
//!HEIGHT 2 HOOKED.h *
//!OFFSET -0.500000 -0.500000
//!WHEN OUTPUT.w HOOKED.w 1.200 * > OUTPUT.h HOOKED.h 1.200 * > *
//!COMPUTE 64 16 32 8
const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);
shared vec3 inp0[481];
shared float inp_luma0[481];
shared vec3 inp1[481];
shared float inp_luma1[481];
void hook() {
ivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);
int local_pos = int(gl_LocalInvocationID.x) * 13 + int(gl_LocalInvocationID.y);
for (int id = int(gl_LocalInvocationIndex); id < 481; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {
int x = id / 13, y = id % 13;
inp0[id] = ravu_int11_tex(ravu_int11_pt * vec2(float(group_base.x+x)+(-2.5), float(group_base.y+y)+(-2.5))).xyz;
inp_luma0[id] = dot(inp0[id], color_primary);
}
for (int id = int(gl_LocalInvocationIndex); id < 481; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {
int x = id / 13, y = id % 13;
inp1[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x+x)+(-1.5), float(group_base.y+y)+(-1.5))).xyz;
inp_luma1[id] = dot(inp1[id], color_primary);
}
barrier();
{
float luma12 = inp_luma0[local_pos + 15];
float luma7 = inp_luma0[local_pos + 16];
float luma2 = inp_luma0[local_pos + 17];
float luma24 = inp_luma0[local_pos + 27];
float luma19 = inp_luma0[local_pos + 28];
float luma14 = inp_luma0[local_pos + 29];
float luma9 = inp_luma0[local_pos + 30];
float luma4 = inp_luma0[local_pos + 31];
float luma31 = inp_luma0[local_pos + 40];
float luma26 = inp_luma0[local_pos + 41];
float luma21 = inp_luma0[local_pos + 42];
float luma16 = inp_luma0[local_pos + 43];
float luma11 = inp_luma0[local_pos + 44];
float luma33 = inp_luma0[local_pos + 54];
float luma28 = inp_luma0[local_pos + 55];
float luma23 = inp_luma0[local_pos + 56];
float luma18 = inp_luma1[local_pos + 14];
float luma13 = inp_luma1[local_pos + 15];
float luma8 = inp_luma1[local_pos + 16];
float luma3 = inp_luma1[local_pos + 17];
float luma25 = inp_luma1[local_pos + 27];
float luma20 = inp_luma1[local_pos + 28];
float luma15 = inp_luma1[local_pos + 29];
float luma6 = inp_luma1[local_pos + 2];
float luma10 = inp_luma1[local_pos + 30];
float luma1 = inp_luma1[local_pos + 3];
float luma32 = inp_luma1[local_pos + 40];
float luma27 = inp_luma1[local_pos + 41];
float luma22 = inp_luma1[local_pos + 42];
float luma17 = inp_luma1[local_pos + 43];
float luma34 = inp_luma1[local_pos + 54];
float luma29 = inp_luma1[local_pos + 55];
vec3 abd = vec3(0.0);
float gx, gy;
gx = (luma13-luma1)/2.0;
gy = (luma8-luma6)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;
gx = (luma14-luma2)/2.0;
gy = (-luma10+8.0*luma9-8.0*luma7+luma6)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma15-luma3)/2.0;
gy = (-luma11+8.0*luma10-8.0*luma8+luma7)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma16-luma4)/2.0;
gy = (luma11-luma9)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;
gx = (-luma25+8.0*luma19-8.0*luma7+luma1)/12.0;
gy = (luma14-luma12)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (-luma26+8.0*luma20-8.0*luma8+luma2)/12.0;
gy = (-luma16+8.0*luma15-8.0*luma13+luma12)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;
gx = (-luma27+8.0*luma21-8.0*luma9+luma3)/12.0;
gy = (-luma17+8.0*luma16-8.0*luma14+luma13)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;
gx = (-luma28+8.0*luma22-8.0*luma10+luma4)/12.0;
gy = (luma17-luma15)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (-luma31+8.0*luma25-8.0*luma13+luma7)/12.0;
gy = (luma20-luma18)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (-luma32+8.0*luma26-8.0*luma14+luma8)/12.0;
gy = (-luma22+8.0*luma21-8.0*luma19+luma18)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;
gx = (-luma33+8.0*luma27-8.0*luma15+luma9)/12.0;
gy = (-luma23+8.0*luma22-8.0*luma20+luma19)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;
gx = (-luma34+8.0*luma28-8.0*luma16+luma10)/12.0;
gy = (luma23-luma21)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma31-luma19)/2.0;
gy = (luma26-luma24)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;
gx = (luma32-luma20)/2.0;
gy = (-luma28+8.0*luma27-8.0*luma25+luma24)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma33-luma21)/2.0;
gy = (-luma29+8.0*luma28-8.0*luma26+luma25)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma34-luma22)/2.0;
gy = (luma29-luma27)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;
float a = abd.x, b = abd.y, d = abd.z;
float T = a + d, D = a * d - b * b;
float delta = sqrt(max(T * T / 4.0 - D, 0.0));
float L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;
float sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);
float theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);
float lambda = sqrtL1;
float mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);
float angle = floor(theta * 24.0 / 3.141592653589793);
float strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);
float coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);
float coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;
vec3 res = vec3(0.0);
vec4 w;
w = texture(ravu_lut3, vec2(0.1, coord_y));
res += (inp0[local_pos + 3] + inp0[local_pos + 68]) * w[0];
res += (inp1[local_pos + 3] + inp1[local_pos + 54]) * w[1];
res += (inp0[local_pos + 17] + inp0[local_pos + 54]) * w[2];
res += (inp1[local_pos + 17] + inp1[local_pos + 40]) * w[3];
w = texture(ravu_lut3, vec2(0.3, coord_y));
res += (inp0[local_pos + 31] + inp0[local_pos + 40]) * w[0];
res += (inp1[local_pos + 31] + inp1[local_pos + 26]) * w[1];
res += (inp1[local_pos + 2] + inp1[local_pos + 55]) * w[2];
res += (inp0[local_pos + 16] + inp0[local_pos + 55]) * w[3];
w = texture(ravu_lut3, vec2(0.5, coord_y));
res += (inp1[local_pos + 16] + inp1[local_pos + 41]) * w[0];
res += (inp0[local_pos + 30] + inp0[local_pos + 41]) * w[1];
res += (inp1[local_pos + 30] + inp1[local_pos + 27]) * w[2];
res += (inp0[local_pos + 44] + inp0[local_pos + 27]) * w[3];
w = texture(ravu_lut3, vec2(0.7, coord_y));
res += (inp0[local_pos + 15] + inp0[local_pos + 56]) * w[0];
res += (inp1[local_pos + 15] + inp1[local_pos + 42]) * w[1];
res += (inp0[local_pos + 29] + inp0[local_pos + 42]) * w[2];
res += (inp1[local_pos + 29] + inp1[local_pos + 28]) * w[3];
w = texture(ravu_lut3, vec2(0.9, coord_y));
res += (inp0[local_pos + 43] + inp0[local_pos + 28]) * w[0];
res += (inp1[local_pos + 43] + inp1[local_pos + 14]) * w[1];
res = clamp(res, 0.0, 1.0);
imageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), vec4(res, 1.0));
}
{
float luma6 = inp_luma0[local_pos + 15];
float luma1 = inp_luma0[local_pos + 16];
float luma18 = inp_luma0[local_pos + 27];
float luma13 = inp_luma0[local_pos + 28];
float luma8 = inp_luma0[local_pos + 29];
float luma3 = inp_luma0[local_pos + 30];
float luma25 = inp_luma0[local_pos + 40];
float luma20 = inp_luma0[local_pos + 41];
float luma15 = inp_luma0[local_pos + 42];
float luma10 = inp_luma0[local_pos + 43];
float luma32 = inp_luma0[local_pos + 53];
float luma27 = inp_luma0[local_pos + 54];
float luma22 = inp_luma0[local_pos + 55];
float luma17 = inp_luma0[local_pos + 56];
float luma34 = inp_luma0[local_pos + 67];
float luma29 = inp_luma0[local_pos + 68];
float luma12 = inp_luma1[local_pos + 14];
float luma7 = inp_luma1[local_pos + 15];
float luma2 = inp_luma1[local_pos + 16];
float luma24 = inp_luma1[local_pos + 26];
float luma19 = inp_luma1[local_pos + 27];
float luma14 = inp_luma1[local_pos + 28];
float luma9 = inp_luma1[local_pos + 29];
float luma4 = inp_luma1[local_pos + 30];
float luma31 = inp_luma1[local_pos + 39];
float luma26 = inp_luma1[local_pos + 40];
float luma21 = inp_luma1[local_pos + 41];
float luma16 = inp_luma1[local_pos + 42];
float luma11 = inp_luma1[local_pos + 43];
float luma33 = inp_luma1[local_pos + 53];
float luma28 = inp_luma1[local_pos + 54];
float luma23 = inp_luma1[local_pos + 55];
vec3 abd = vec3(0.0);
float gx, gy;
gx = (luma13-luma1)/2.0;
gy = (luma8-luma6)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;
gx = (luma14-luma2)/2.0;
gy = (-luma10+8.0*luma9-8.0*luma7+luma6)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma15-luma3)/2.0;
gy = (-luma11+8.0*luma10-8.0*luma8+luma7)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma16-luma4)/2.0;
gy = (luma11-luma9)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;
gx = (-luma25+8.0*luma19-8.0*luma7+luma1)/12.0;
gy = (luma14-luma12)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (-luma26+8.0*luma20-8.0*luma8+luma2)/12.0;
gy = (-luma16+8.0*luma15-8.0*luma13+luma12)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;
gx = (-luma27+8.0*luma21-8.0*luma9+luma3)/12.0;
gy = (-luma17+8.0*luma16-8.0*luma14+luma13)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;
gx = (-luma28+8.0*luma22-8.0*luma10+luma4)/12.0;
gy = (luma17-luma15)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (-luma31+8.0*luma25-8.0*luma13+luma7)/12.0;
gy = (luma20-luma18)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (-luma32+8.0*luma26-8.0*luma14+luma8)/12.0;
gy = (-luma22+8.0*luma21-8.0*luma19+luma18)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;
gx = (-luma33+8.0*luma27-8.0*luma15+luma9)/12.0;
gy = (-luma23+8.0*luma22-8.0*luma20+luma19)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;
gx = (-luma34+8.0*luma28-8.0*luma16+luma10)/12.0;
gy = (luma23-luma21)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma31-luma19)/2.0;
gy = (luma26-luma24)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;
gx = (luma32-luma20)/2.0;
gy = (-luma28+8.0*luma27-8.0*luma25+luma24)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma33-luma21)/2.0;
gy = (-luma29+8.0*luma28-8.0*luma26+luma25)/12.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;
gx = (luma34-luma22)/2.0;
gy = (luma29-luma27)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;
float a = abd.x, b = abd.y, d = abd.z;
float T = a + d, D = a * d - b * b;
float delta = sqrt(max(T * T / 4.0 - D, 0.0));
float L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;
float sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);
float theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);
float lambda = sqrtL1;
float mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);
float angle = floor(theta * 24.0 / 3.141592653589793);
float strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);
float coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);
float coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;
vec3 res = vec3(0.0);
vec4 w;
w = texture(ravu_lut3, vec2(0.1, coord_y));
res += (inp1[local_pos + 2] + inp1[local_pos + 67]) * w[0];
res += (inp0[local_pos + 16] + inp0[local_pos + 67]) * w[1];
res += (inp1[local_pos + 16] + inp1[local_pos + 53]) * w[2];
res += (inp0[local_pos + 30] + inp0[local_pos + 53]) * w[3];
w = texture(ravu_lut3, vec2(0.3, coord_y));
res += (inp1[local_pos + 30] + inp1[local_pos + 39]) * w[0];
res += (inp0[local_pos + 44] + inp0[local_pos + 39]) * w[1];
res += (inp0[local_pos + 15] + inp0[local_pos + 68]) * w[2];
res += (inp1[local_pos + 15] + inp1[local_pos + 54]) * w[3];
w = texture(ravu_lut3, vec2(0.5, coord_y));
res += (inp0[local_pos + 29] + inp0[local_pos + 54]) * w[0];
res += (inp1[local_pos + 29] + inp1[local_pos + 40]) * w[1];
res += (inp0[local_pos + 43] + inp0[local_pos + 40]) * w[2];
res += (inp1[local_pos + 43] + inp1[local_pos + 26]) * w[3];
w = texture(ravu_lut3, vec2(0.7, coord_y));
res += (inp1[local_pos + 14] + inp1[local_pos + 55]) * w[0];
res += (inp0[local_pos + 28] + inp0[local_pos + 55]) * w[1];
res += (inp1[local_pos + 28] + inp1[local_pos + 41]) * w[2];
res += (inp0[local_pos + 42] + inp0[local_pos + 41]) * w[3];
w = texture(ravu_lut3, vec2(0.9, coord_y));
res += (inp1[local_pos + 42] + inp1[local_pos + 27]) * w[0];
res += (inp0[local_pos + 56] + inp0[local_pos + 27]) * w[1];
res = clamp(res, 0.0, 1.0);
imageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), vec4(res, 1.0));
}
vec3 res;
res = inp0[local_pos + 42];
imageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), vec4(res, 1.0));
res = inp1[local_pos + 28];
imageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), vec4(res, 1.0));
}
//!TEXTURE ravu_lut3
//!SIZE 5 648
//!FORMAT rgba16f
//!FILTER NEAREST
1a88533af88e23bb14d5c73afaa0e53ab42022bbcfc4583abb5687bb3fe2283cd2080d3c23c4ff3b97812f3cd41d95bbf8384c3bd081803c65bf583e57a6603eb9c28e3ca1e1833b0000000000000000f7572b3a485110bbd9225c3b3f3b373b1ae84cbbfafe293a22fdcbbb1bded03ba2c4a53ca50ba93ca7158b3b33bb29bcdeec353c861f7f3c010d243e3577523ef322463d94b2b53c0000000000000000cfab4a3974c1923a306fac3b5c33a33b92ae0dbaec67f4388c7b9eba38484ebd7d1f633d9ae5ad3dc7fc1bbd5a78b6bb471616bba8882abd791ba93dea365a3e75682b3ea374c93c000000000000000042eeba397216e3ba69265c3b136e5c3bcfbbcbba4096c139cf552ebb5f45f53b4389a5bc5afca9bc9e9feb3bc89f1bbb93b09f3b647b86bcb7208b3e4b4b8e3e44b582bc09e0a33b00000000000000005f1b933907d988bac6138c3ad2518b3a16e7ddba0d9ca839ef490cbca6e7973b01e1bebbfb71b9bb2e478b3b839b11bc1dcca83b51cf7a3c59fd673e81cd783efd1ab83c47d8f83b000000000000000022ac0539362d08bbb745483b7ce33f3bbfbf50bb3b48dc388b720ebc2e1919bcebcbc13cc8e0cb3c4f96f6bbd65d25bcac19253c28dbc13c5e20323e118b443ea67c653dbbe1f93c0000000000000000b939c83978cf17bb07499c3b5ffa933bf479e2baae3aa139738c7dbbaeec883b884a07bd667008bd70093d3b841355bbd6b5fb3b479706bdc9f29a3eeb839d3e0ac502bd57e1ee3b00000000000000001d8c2a39849f8eba2263373b4491683be4377cba23bc39390a7ee6bb63f0963ba3b6ebbca7baf1bca218673a08aad7bba3d6d23b127996bcad77903e5690973ed03452bc4dd1083c0000000000000000794c39394be7b3b9df61c63af4e3083b294d03bbf5dc8739dab745bc44e8d7bbb461cbbbd0d5acbb81bf51bcb92b61bc3a907e3bfe92a13c19a46a3ef3237f3e2847183d5f4a823c000000000000000033143d3a4ab0f2bae087063ccabc023ca1a53aba54bb2c3a46f043bbc87f043a68383fbd9cf43ebd3b2d1cbb541a4abbe17c2d3c4cd546bd3c7fa73ebaeea93e7cdc3dbd33a43c3c0000000000000000e6d97a394b2e9bba23e38c3b70ae8f3b48d6293aa1dfe6b7e23cacbb332a223baecb15bd38e216bdd027a3bb2e57e1bb8388c13b03290ebdade39b3eeb5ea23e57dfd5bc15de543c000000000000000080f2d2b815e00639aeb8283bcdff843b8f0cfeb9a7eee1b854bd14bcaa7417bb7f67b9bcc94eb5bc5b9439bc579175bc1f00ce3afcd007bc818b883e3256933e5e69ef3b9af1ae3c00000000000000000f4e023af70509bb5f71303c55082b3c4df4ddb92f6880399fafb9ba775b6c3bb0fa62bdf5646dbd063f833a9d1f07bb46af403c214176bd106bad3e6e0fb13e71806dbd50946f3c00000000000000009d76c4b77bc5c6ba840ed93be3ddde3b9d180f3b415eaab9a298dabad28b503ba8be31bd04a43cbde54d06bc9035ebbbc45e7b3b39aa51bd4171a33e8b39ab3e56ac12bd074f9c3c0000000000000000e34c75b90a5e9eb9b6cf2d3bf0008d3be58ed33ae9e841bab3fe00bbbcfb903b63abbdbcfeb5cdbcab1c86bc2e83cfbcbe3689bc0d3f07bdc1548e3e286a9a3ecb41733b2f403f3d000000000000000026ec85bbed0ee9b761f6bc3b9b12ea3bf8f5de3a2c808dbb91509c3b93ba933c06346abd8e0479bde121683cd9fd4f3b3936d53a37016bbd8bd9a93e72beaf3ef7df60bdb092ef3b0000000000000000130f7bbaace7bdbaee87b93b3c61013c5eae4d3bb79055ba3323a6b9ce2e4c3c14453cbd0e3b5ebd9cdc99bbb3bf07bc1a72443ae1e081bd5712a33ec1deb13eb86118bd6985b03c0000000000000000e8f506b9d90b86ba1338e93a7d509b3b44f9fd3a3dda3d3a6173c73b10d1903cc9f393bcc381c7bcd542d2bc06093abda70842bdb8ff8cbd77c68d3e0650a13e8461863cff66b73d0000000000000000dfb5f2b6c3e2b1bae0ff3c3c5b76613c29399f3a5c4a4a3a024f76bbf4cfe63b046176bdd64b87bd390afbb92ac2d7bb46a6683c8f3791bd382faf3e2ca8b93eda5985bd8f0cad3c0000000000000000108926ba9260daba4f61ab3b92e4233ccc4e453b8009093bcab701bb01d5393c4a4721bdb70265bd8c3d5bbc123f59bc0cc4e23bfd88a6bd1eeaa03e6d11b93ee7740dbd8407e33c0000000000000000818a143a353b1abb6723fcb8f05a373b82905fbbe651333c81093b3cd681103de1ae43bb3e9cb6bc5e7f03bd33979fbd7c5491bd656efebd6bef843e1be5a73e70c15a3d4ea4093e0000000000000000851a9f3a8e3766baab342f3c7fd9573ccd953f3b54bf5a3bff31b9bb3f1d843aea5c55bd7cff7fbd7c1b14bc11ad17bc4f54733cb5b688bd7d04aa3e4b7dba3ef03575bd1b96b83c00000000000000000da8f83a0a226cbb3434893b6277213c9a4d7b3b5322163c0af2fbbb4760343c21b7e9bc39776ebdd19cb0bc666badbc14c3603cc74eb6bd49ea983e2bd6be3e0726bcbcaae8e23c0000000000000000378a903a13e9c2bb07db25bbb8e34439a05c0dbc0a8be53c19ed543cb5973b3dc6a36d3c4c92e3bcda552fbd4ae9c7bd299785bd79b433beb2566f3e5e7eb93e95bfab3d0efb123e00000000000000005e840b3c8fde02bc2971bb3cf1fcda3cac95343bb1b53d3b4a467dbced4aa73c3425a6bd2e96bfbd56b0db3bb20b21bcfd72b63c4463a4bd5b65b23e87c0bf3e458d9abd28c6e13c00000000000000009cb6f23bb60ad638d76d7e3c3292ac3c141e323c17cc773c6ba965bc3282b2ba58e94bbd7b458fbd365402bd3d40a9bc6f34a73c2dce8dbd34fe8a3e6057bc3ef6a9a63c5035da3b0000000000000000b8950abcc91c6cbba41606bc3e3d943b3763043c75531c3de29d673c59ab0b3dd6c8763d534a79bdbf38ddbda2fb66bd7cc00abd3a0c56bee356ff3d72f2dc3ea254583e48b27c3d0000000000000000c907a43aa5b0fbbad955b2b509ba5e3a42acedba48a6ca3a7cab89bbca0e483c6afca43b7ecbc33aad473b3cf3dfbbbb8141703a9586273c530b533e0ccf773e9146903ca9a6443b000000000000000085f9a73a54a9c1384be4be3acb3857ba94ff57bbf336c13aebca0bbce0042c3cc2588c3cc592893c8d863a3a75f29abc6285163bb8f3c73b5ec0e73ddbab663e12a4d93d55ceed3c0000000000000000e3953239c8e5df392888663b416d703ba9a4dcbb0ef6d5b7d73d81bb00e2be3b30fd183c05e1eb3c06a3ed3b8463d7bc7f4833bcd2670ab96368883de1a10c3e80702a3e7314f33d00000000000000006c12a7390ef3f5ba97c4523be0a2683ba48cccba0816eb3953bc27bb4a9cf93bfe25a5bcd473b2bcaa46f33b755306bbd4439b3b518f8fbce35d883e1e11923ec05085bc0bd29e3b000000000000000019f2a63972ef31ba1b90043abf4f883a25b436bbc24b0b3a31a4ecbb5eaef63b97de0cbc54360cbc8a09ef3b0ab616bce102a73a7fcff63ba4d0583e1896873e1ce5dc3c89dcf53b0000000000000000918cab3980e7afba4f42983a2cc9b339cf8fe5bb9f285b3989c95dbc9f9b3c3c46d8513c5764783c5c98cb3bd7bec3bcac9ef5bbbf48b63c3ed1143e6ee0423ed7b7bc3d1b57633d0000000000000000a28ee339feee3ebb0ce0a63ba7aa8f3b53fe8fba6cd88639593b81bbf5a2b73be31107bd6b080bbde664c33ad0b41bbbc18ff73b77c10dbd46ea983e1a46a03e5cbe01bd9e08e63b0000000000000000825572390d99b6ba5d92123bd32e8e3b85536ebae0cb8f39861acfbb99db143cc2e4fabcb74903bd8e05c6ba8acda0bb433a923b4c1cd8bc095f8b3eee28a13e5f783bbc3313023c00000000000000001d7326b88b1e133b6273deba1c57883bb86fb2bbb2a1463ac4823ebc35a5053c2a457cbc70c728bc2c3208bc89f95ebc1bb10fbc9e83813bd6ca5c3e98cf8d3e84513b3d1a37903c0000000000000000e3fb7b3ade503fbb93520e3c59ec003c48c49d39a750123ab66c6dbbef085b3ba8fd3fbd0f0243bd175f94bbd4aa3fbb8ea0253c30b44ebda836a53e96f2ac3ef3603abda600473c0000000000000000e843243a9b8f4ebb6c63a23b57e39f3bca11403bc33492b9cb2984bb36e02f3c8b3d23bd577924bde12e3fbccd0ed2bba114ea3a1e903dbd63c7973eb040ac3e804bc0bc3951873c00000000000000008a42b0b9035eef3a0e8761bb007f363c01ea0bbbb230a63995110abc783eb13c979925bd628fb0bcb82bd4bce45c19bc3dc844bcde5cedbc47ad803eb4bba93e3d02fc3bc338de3c00000000000000007f063d3a10cc47bbb18b2d3c3038463c44878f399d4d303a06e30abb0849d83b924463bd22a275bd9d1e38bb41366abbdae12d3c2b4f81bd5c89aa3eb89bb53e37b867bde93b8e3c0000000000000000abf54b3a0afb94bbe676c73b88dbfb3bb7d6d23b11cb85b96da425ba7a6c6f3ce49a2abd52b856bd1e928cbcf51148bc84ff42bb5cc98bbd00ae9c3e6025b63eca32d8bc8ea6ee3c000000000000000011372c3a05e26dbb24be0fbbb97fc43b641b173c231cbeba4da54e3b3c06d63ccf5ac5bc6a9b11bdc667fabc8b2503bdccc003bdf23190bd8eff853e7d71b13e8448783c1a01823d00000000000000001c76abb9d0af31bb5b3b1c3c9981623c36c4f13aa65f94b8e13bd7bad8ad4b3c0c296cbd00be86bd978f1cbbb53092bb118d073c2bcf8bbdff00a93e2ad9ba3eb7606cbd8497a43c000000000000000098c97a3a1637a8bb7980483b8c982b3c4ee9e13bfa661e3b5f1ae9baedf4c33c576417bdd3c971bd6886bdbc407699bc97c260bb57afb7bd0f85973ee743c13e8f9bb0bcbff51c3d00000000000000009d25c53a189c9cbb5c6952bbcf92f3ba2297a33b6fc0113c8eb1913bd05b0e3da9a692bb54e1b3bcfb750dbd902d84bdab813abd0f23e1bd23fa763e1ab4b43e8883253dff44d03d0000000000000000aa6eeb3a11ab88bb73d42e3c2b0b8f3cf95f383b1fb9553b0f73c1bbb574373c183167bdb43c94bdd1a420bcaa4331bc14f5533cf6fa9bbd4fcba63e2a65c43eaaf07cbd0ef2e43c00000000000000006076ea3a33ca9ebbe14002bbeff3463c4627ac3b4c4e233c9a36b0bb0d1ce93cbe3bb1bcbfea81bd9ec1fcbc4659f6bcb1ba953b49deeabd784e8a3e9eb2ce3ea499efbb8bfd343d0000000000000000245a163ba00d66bb9ca14fbb7367ddbb4cc434bc4457d03c91bc00b9b6060b3dbe426e3c929a6fbaa755e5bc09ebc6bdcd3e0cbde6e217be5b194e3e363db53ed609ad3dfa1bf03d0000000000000000af206d3ae37258bbddac013c49617c3cda23ed3ba8da8f3bb360cfbb0131203cbe7f39bd28e491bd4e869bbc608c46bc71ba4e3c1f3294bd948b9a3e587aca3e36df5abdda45e13c0000000000000000034b823b1f7401bc873546bb8e24143cdec3fc3b96e28c3cc4c735bcdd09fd3cee47c4bb92a88dbd9f2a17bdca0c15bd3e4b733c13adffbd6e006d3e8cd9dc3e614e383c45081a3d00000000000000000efc523b7c0b15bb9091a5bb07f8c4bb525bc6bc49b2243d7574a3bb4138f03c1503023dac837dbb31b9b4bc9b68dfbd4f4316bc26063cbe24a8283ebc7ec33eb6f3e13d3e37df3d0000000000000000ab6a0e3c0dd1b8bbf38f843c3928d83c64a7283c61c8743b316e88bc81069a3c502182bd4e3fd4bd21c20abcb8a30ebcc7d0a73c36aca4bd7d89a13e56fdce3e6f6691bdd6010a3d00000000000000008bea323cf4ad30bc121b0c3cb42f1a3c1380b73c3952b73c9b61bfbc76b5a13ceb0437bcc422acbdd5ba03bd5c3022bde7990c3d0f2bebbd2b08323e9d7eee3e4698243da12d093c0000000000000000e356b53b27f72bbb24b214bc91725dbbdd59f2bc2075633d84dea9bc542ae43cac824b3d58d79abcc32caebc0872cbbdb681173db38a5abe30a66e3da337dc3e77c55a3e91bd263d0000000000000000bd54a53a085f05bb2ce9fdb816e52e3a414022bbe6e6df3af08360bbc72e433c5fb7a83b65778439dfc64b3cf10badbb4d2d613a6058063ce502483e5168833e310b8a3cca16073b00000000000000000b70cf3ac1a16fbab28e163aaaf4cfba55d52bbb46a5ed3a2dbbabbbbe7a833c41d2643c46dbf13b12ad5dba01a489bc4901a3bb5d81d23b288ea83de3d5863ef627063e7ac00b3c0000000000000000947d78393b20a9399d9ca6ba592811bb7df528bbea39c7383f4e82bbdcecc63c057c183b8992223b7b3669bb0155e5bb51824abc64cf583b7bc2253d250f5a3efaa0693e1533963c00000000000000002886ba390ec8fdba7192613be8b7733bba15c9bafcea023a5e662bbb039ffd3bf1eca4bc06f3bcbc244e003cb4c6e9ba3695993b28bb97bc4bce853e3cf4953e05858ebcb93f933b00000000000000005505d339147b73babfe7953834b6bc3a5ca68ebbf6625f3a63bdbcbb2a9b363c123d44bce54752bc43ef3a3c47ed0fbca74dbcba2f60c5bad70e4c3ef331953e2accdf3c10e48b3b00000000000000008bf0303ae68955bab0f95b3a98a50fbbd5d41dbc6250253a45622bbc00caa93c6de73abb3df6683bd05b973cdc6966bca48758bc39180a3cebd2063e23705e3ec0e3093e41f9853c00000000000000006aa20b3aa03b77bbb370c03b6383873b353706ba2bde4339f0a48ebb4301e73b09b308bd58570ebdd983083a5c71a3ba7e4c023c0cca12bdfc0d973e41fba23ebd1a01bdd8ddbc3b0000000000000000982dd339ecb111bb0762423b798f963bb9cd70ba3897ce3931aec7bb9e12553c7e6607bde2eb0fbdbe4a0fbb765834bbf49fa13b66d80cbd83b7873ebdd7aa3ebfcc5fbc40f0af3b0000000000000000cde0d6b72ee34d3b10116fbbb87dc13b850515bc60ccb23aa34e1dbc8b1a8e3cff30b7bc036685bc80fbdeba8c0c20bca1eb42bce5112cbca4554c3eab7d9d3eff674e3d87251d3c0000000000000000ce4c903a564777bbcb291c3cd958f33bbc99b63a8e7aea39680089bb83b6bc3b2d6243bd5f3c47bd178acabbe71622bb63c0233c4e3c56bdc047a33e9a26b03e4c393abdb17f463c000000000000000047e4853a76ac95bbdbe3c73b8c969d3b4136b53b3167edb9e8449ebb6aa08d3cfdae32bd904e36bd701c87bcef1f90bbb891533be63d64bd5266943efa42b63e1642c7bc32bb773c0000000000000000e4424fb9a7a47b3b2f5505bc0c9a783cc8caa0ba52a68639fd4059bc0e60213d914065bd90bf90bc231320bd4317743783dc1abc99892abdda876f3eda2cbf3e586e26bb33e5bd3c0000000000000000c50c793a0ac067bb75a8263c74bd573c73a9b43a0ac9ef3929204fbb37b90d3c5dd561bd38e27dbdeda1babb235f6ebb9d1d2d3ca37f84bd5bcca73ea080b93e5a4064bdabfe943c00000000000000004c8ed63a7a14c6bb8e17af3b36b9eb3b9ac72f3ce9dd2739664150bbe3eaae3c0fe121bdd0d869bd37e1d0bc20b954bc831784b99a4ba0bd5d3b953edf4dc13ee632b5bc34e1f13c0000000000000000cd38473a87ffe6ba94cfaebbb09f753bdd99873ce579c8b767c480bbe75c093da16cf5bcc4f51ebd1a6638bd9379a7bc026f69bc097f9abdd098753ede38c73e57d8243c5e6b293d00000000000000000e15a43ad14996bbea59243cfd4a8b3c35f10f3b37c7e93a2e8298bb87d9693cc8456bbd57748dbd05d11ebcbb13f0bb442f243cd32496bde38ba53eda24c23e18246ebdc5f4cd3c0000000000000000f790173be2069ebb565579baddd81c3c7183253ce684c73bb492dcbb937eea3ce801e2bceed36ebdf14c1dbd8a1dc9bc41a3803a7302d0bddf36893e5fe8ce3ea40b1fbcdc712f3d00000000000000000870843a708087babad768bb46aee5bbef39353c093b453cbf4a87bb6bd6cb3c9893293b6920f1bc13c04cbd9e5c49bd229f09bccf9fdcbd6e2f583e9788c73edb775e3d74fd5b3d00000000000000002f5e113b29f8b9bba34e163ceab99b3cbcfba73bbf8f4d3b343ccdbb1863703c711a59bd18209cbd4c3d88bc79ff1cbc2a18493c013e9fbd4c009f3e59dfcc3e53f974bd2eb4ea3c0000000000000000277f743b2a9439bb3ec3c3bb1fc0ce3b11d0063c2397743c8cf63ebcf474e33c4926abbb1bd763bdc81b43bd84ac1fbd0457123c7edaf4bd0494633e56dedf3e8fa2fe3b65274e3d00000000000000006867113a86c3fd3a8d65d0baf25b1ebc5163a8bb4767c83c08e5f6bb608b6c3c6e4aa13c2c5cc4ba18f756bda64395bd6cfb033c1bfe01be30551f3e0f9ec73ee8a8e53d96d7503d00000000000000001e2d193bb5a2cdbb8218d93bbbb3773c7ca5423c98ad673b947cf4bb6a2e733cb76126bd52559abd67afe2bc90662bbca3c6383cde5a94bd17be8e3e773ed63e548750bde22be83c0000000000000000f302d53b58187bbb5b649abb6c6aa2ba2435253c05a6ae3ca11389bc6cc0bc3ca3374b3c75685fbd0bc250bd052342bdaaba8b3c815cf4bd122e2a3e3ab6f13e1324c33c7c593d3d0000000000000000277ec9391711833b992328ba1662f6bbbd509fbc3b56113df0b424bcc665d93b10ece93c05ccf23b6b1d3ebd940fb0bdd9fdc03cb97910beb31dfa3d7b76c93e7211153e54ea333d0000000000000000c513493cad322ebc7fb68e3cf547d03cc046413cad87c63b7e5859bc96455e3cffdd51bd0ec3e0bd7c2471bc45f4c2bb3b617c3c2f218fbd043b913eca0fde3e2633a1bd40b00e3d00000000000000008277173cd6a1b4ba204ca3bb9de6ec3aadf0c33c38e7be3c11f8b7bc56083b3ce8e3843c59af88bd4bbc1ebd820150bd42acc23cdd4dbbbd85f0a33dcc18093fc10ac23ce428e23c0000000000000000ef30ee3aa3db6b3b5b44623a41a2bbbb0928cbbcf389343d05355fbc6e3624bb7b83e93c13b3f43bf8d209bda148bfbdc569233d0bf4e6bd3104033dfdbcd23ed5d4503eaa86503c000000000000000055a99d3a8dc10ebb6ffd77bac578923afa5e48bb3a2c063b6cf528bb778d473c6a12a13b1959cdbaf00f663caf1c88bbab740c396f0be83b4ae53e3e90a98a3e0f5b653c63f9063a0000000000000000fe80d83aa5d529bb55e608bb6d6cbcba1d52e4ba33ff873ac4935ebbb2dfa73c1fc02b3c07f97dbbeed4313b7088e43ad444c2bb484db53b915dac3d787da43e5b289c3dc11c8cbb000000000000000008d02d3ac671f9ba4d9a0abbfd9abc3ae4dc95bbf41c043a73d2abba1b47c93c9d537fbb5841b5bcf813ce3c7f761dbbe5f83fbc9cfda0bb02a0273d6d5bab3e0d15ff3d7eb0213b00000000000000003971d4390a5015bb2a7a6e3b712c793bd41ad5bae15a2a3ad08524bb9ce5023c2c7da5bccc54c5bc95a4103c88c2cabaa5009a3bf16d9fbc7eb3833e1967993e098b9cbca4ed813b0000000000000000cff2e8399269aeba3e8590b9e013133be9e3b7bb7283a03a305c92bbb5d25f3c36d562bc9e5f9fbcb3778c3c7889f8bb4af805bb52ea0ebc8cd2443e9d99a33e87ce713cf6a30a3b000000000000000013985b3a47b4b1ba280800bb25a292ba6ab443bcf734963a7628f5bb15ddf73cfc513abc758740bc46cbed3c9d9278bb9d7595bc7bd19ab9bb71103e82dc923e700a8f3d12c5283c000000000000000063a1333a197490bbe8bcda3b8630763b83121ab93afe533990fb9abb98e8043c9c030bbdea0910bdaef32039a4fdb2b9c76d063ca5ce14bde96c953e1d86a53e8e9f05bde9ee9b3b0000000000000000163e3c3a39036ebbd701983b43c2833b4e919eb99c5b84399e20c8bb0d12773cd01d0ebdeda31fbd7bc071b95bab62bad80ff43b973622bd0115853e5efbb23ed6789dbccd6e013b0000000000000000258eb839c0d5353ab6ae81ba4b826f3b63ad2dbc137fa63a4190d9bb068ca23c85bbbdbc72f9e1bcce7c823ca9e10cbc37a00abc7362a7bc35a6453ee302ad3ec338013d8b55133b0000000000000000ffd0b23ade8c93bb3d63273c37e4f13baea6023b8ff98339931da0bb041bf23b550447bd9fbc4abd2bd9e1bb6ed6c6ba3a232c3c9cb159bdffdea13e9171b23eebea3bbde256363c000000000000000094aac93a0503bdbbab860b3ccbc6633b5455f33bb1cc7abafe31dabb2e05a53c60523ebdc6fa47bd23b989bc53d366ba8bec0a3c406f77bde551923e76d2bd3eab57ecbc29ed1b3c000000000000000000c4913aaecd92bafe79013bf260653b7825d73b278335bbc3fc34bca35a0d3db2284abda41616bd303cacbcdf41003adb32a739964a52bdbcf16e3e47b0c73e2f0a0abca112223c0000000000000000c4b3993a88aa82bba911273c2a17633c79eddf3a1b08c039ce686fbbeec5203c849c63bda56481bdeb6fe6bb9ce93bbbaa502d3c040584bdaed6a53efb71bc3e360e68bd7f68913c000000000000000021b0123bb2afc2bb6b5fab3bd79fea3bb835503ce4d16cba9e46d2bb2b07ba3c750022bdba4b7fbd650ce6bc5dfcbcbb097cf83b2bb29ebda3388f3ec193cb3e65fbe4bcfd6e9f3c0000000000000000813fb23a11eb14bbe09210bbef7fc4399b04bc3cde85a5bb3af8e2bbf310093ddbe807bd03dc5bbd96b22bbd01af17bbd5a36539de0791bd5842693eb185d83e245cfbbbf9148b3c0000000000000000b84de03a7b43b2bb1b9f1e3c9098993c3af61d3bcb21113b76c3bebb059d843c71d16cbd20d38fbdc69561bc4a97d1bb8c5f363cf0a097bdbbeba13eec3ec73e259a71bdafd2cc3c00000000000000009454063bb7200bbb0ab06ebb310f213c1e0f663c4ecb8d3b15fa1bbcbd3cd23c9ae3babcf9d97fbda0414bbdffbf56bc35d3213c1b3cc1bd2d037a3e868edc3e9d6938bc7fe2e63c0000000000000000feef723a183bcb39bc807cbbb37600bc9a81d53c41efe63aec63dcbb12adba3ca30a4dbb680446bd55f68bbdee881ebcaf66ee3b1d4dadbd9ff53c3e36b0e43e25caf03c2cd5503c0000000000000000174b223b811cddbb543e0d3cba399f3c125eef3b8c700e3b3c47e8bb8545903c2c2456bd09339ebdb3e4b7bcfa6dd1bb0ca4493cd12e9cbd4d57983ed5ded33e758776bd3b36e03c00000000000000005c680f3bfbf43d3ab9c1cebb2811083becd9883c21192a3c5ef344bc1bcd953c0f300b3b9fe861bd58d88cbdc247a9bc096b7b3c9700c6bd9c793a3e2e34f23e6664b93b0c90fd3c00000000000000009a40ce3854df1b3b970f31393a7168bc3c83923cc04d343c3eddd2bb67a5de3b8ffa8c3c88b5c9bc12fdb7bd811089bc981b893c5376a8bd1c5dfd3d40b3eb3eca67a33da7cf06bb0000000000000000317c573b3ddf04bc8a5ec63bb10e6c3c6adc7d3cbc4eb13a9de914bc5edf903c10fe1bbdf8d39bbdd54610bd3e87b2bb240e493c7b428ebd0f99853e7066df3e197054bd005ad13c0000000000000000f491393b96db953a7e4e52bbfed5cfbbcf6e8b3c77ee853c540964bc3baf183c4b3b923cf5a634bddfd7a4bd7b91d9bc418d9a3c8a8bacbde9dbef3d7e1a023fa773bf3c9270db3c0000000000000000e16f01ba45216f3b2d52ce3ae16d53bc58cda73b1e3aac3c4b10bfbb567938bb57cde33cc0e74abcb78fbdbd98c3dbbcdbd6b13c0b15a4bd29afae3dce12ef3ec14bdf3d89a606bc00000000000000001ed2433c5b3054bcb853873cc9a1cf3c5504383cba15bd3bddce2dbceae9133cdba62fbdfa2ce3bd30599dbc3e9eacb7cc11683cd1fd70bd6080833e1a54ea3e34f9aabd65faf83c00000000000000002e44b53b61850d3b134e22bbfe5b8dbbcfb6c33c29d98c3c616388bc0eb8edba0610ab3c6cd40fbdf111aebda538dfbce3ef853ce8c74fbd9d95073dccc20f3f232bb63c3857a73c0000000000000000362be2b8b140783a6724b63b513b46bc347dfeba47e9dd3c0dbc05bbfc1427bcfbeaa43cc347893b06adadbde89b27bd558c823ce29101bd951240bcfbad023fe511fc3d138443bc0000000000000000d8dfae3a297509bb38a832ba030af2394a6368bb1c4f173ba16d21bb21214d3c67a4b13b7a5a5eba342c813c9efa96bbeab4a1bae3c9d13b2d663a3e3314903e1178f53b73f4af390000000000000000bf33de3a279213bbe92194bb7b49493aef1599bb5147e53a9ec04abbb0eca13cbe26173c30f715bc41a9943cab68353bec4d9fbba1c5b43b4940b23d228db53eb97f063d87d4b5bb00000000000000008ced4c3a2912a8ba9a78bfbb864682bb75c6b6ba40671e3a1333fbba5328ee3c8c84c83baffcf6bc4569cf3c3edc0d3c0bce79bc578ce23b7f522e3dee81d03ed6ab183dc4179bbb0000000000000000a1b1e639933a1bbb24e3863b5649763b74d0d1ba3f0a373a7e2029bbe8f2033c22d7a4bcc7f9cbbc52cb223c6f87c3ba4ae49b3b363da5bc56df813ee8899c3ef135b1bca61e733b000000000000000072ca093a7b0103bba25b4cb962333c3bf35ce2bb6b02ea3ab97567bb53225f3c5efb61bcc4e5c7bc106bcb3c3c0cfebb77a826ba826a49bc6c3e3f3e00c5af3e6f8c60bba2cea23a0000000000000000a80f5f3a9c88a4bae1f1c1bbe98f4fbb845f32bcfcb5013b2795debb67530f3d4c8f32bcad9a99bc72d3253d5ac99cbb35be70bcba976cbbd610093e8416b53e56e8483cb9952d3b0000000000000000e1513d3a25b49dbbbc7ffb3bf4e5523bd9d0b13913e81e39eb2ea3bb88a8103c59380dbde5ef10bdfee2963947647d397a54103c3cee16bdb40a943ea25ca73eefca08bdae286c3b0000000000000000f91a903adf23acbb394fef3be3470f3b24fdfb39c4413c378833d8bb5c7c823cfccc12bdb95c27bd2bb91f3b85fd853a2cd02d3cf93629bd5adc823ecb31b93ed579e0bc072a91ba00000000000000001c56403a02dbc2ba08ca733a2d97983abedb4bbcf296d53a71b6adbb3384ab3ccc99c2bc4ce907bd598b123d131238bc235264bb425bbcbcc3603d3e72dabb3e2d2b243b0fd4d6ba00000000000000005d0cce3a5ef3acbb858f373c0a11eb3bfa63de3a566ebc393fd4aebb138a043c28204abd1d904cbd1d9bd8bb755befb998a43b3c9f5c57bd4acba03e923fb43e98fd42bd67c21b3c0000000000000000a5280c3b9f82e1bbc392353ca2df0d3bbd1af53bdaebd3ba382508bc4d74a53c211b47bd4b5a51bd54ff5bbc3d7e553b469f613c024675bd3d78913e9736c23e333717bdd326533b0000000000000000faa2083b8fd5a2bba8b30d3cea061eba0002923b364a71bbded114bca013d83ce61231bd3c1a4dbdb2adb73a5defd83ad9011c3cd61455bda404753e04e1c93eee45b0bc5d0626bb0000000000000000727fc33a0f9f93bb5a4f2c3c93746c3ceae3af3ae5ae8e39c97e98bb5860363c043568bde3c982bdef05e2bb3d33ddbac4f83a3c07bb81bd03eea33e8849bf3ec4df73bd3fa1893c0000000000000000e7f1453b472ccbbbaed0e23ba0b9ea3b0c534c3c17ff4dbbd41514bc5c12b13c732830bdcc0486bd3661c7bc6cf34b3b480f5f3cbe3c8cbd407f8b3e52efd23e5d3c2ebde4f5203c0000000000000000d6a5113b794b2cbbb50bb73a4284413b3c6c983cae9708bcdf9d1dbc64f3d53cc4e70bbde0b689bd4db8c5bce7891e3c9e8a4c3cf84179bd23076b3e7906df3e30f6ffbc81b8b7b90000000000000000d64c213b14f4debb3345243c03e4a83ce15e813af983143b9af1e9bb0ce8963cba0d76bd67ed91bdfd8261bc6f3e94bb6215453c176b93bd3e779f3e3c07cb3e25f380bd8323c23c0000000000000000d2f81b3bbe780bbbd4f121bb81063e3c8f3e893c21c302bb31c928bcc0f0b53cf934d8bcb1e08fbd634a42bd64fd943b0295683c999d98bd2a9c6c3e8999e73e00de02bd94674a3c000000000000000032e5943ae149b03a60c2a0bb8cfba13ac679d73c79eefbbb1c3ef8bb3c50813c57e905bccb7292bda7885abd6db87d3cc9a65b3cc99666bdd917393ec9a2f43e629895bc1e13b4bb00000000000000003d57433b1dabf4bb0c6b0c3c649ead3c8410d93b533f5c3afe1e01bc60f2963c533459bdca40a1bd524bc0bc3c07e5ba75d1533c395092bd04ad933e368bd93e03f386bd1a0bcb3c0000000000000000ba01cc3adfb2173ac53d97bb2a5fa13bc294c53ca5e796b847881abc2a6b423c80d63fbb3cde8cbdd1938ebd04dba13be1cb753ce9b082bd35fb2c3efa5f003fa656dbbcc7644f3c0000000000000000a3d6a7390fd4113bcf0ce1bab10d04bcacdcf33c016c90bb5593a8bbcd526d3bdbcb2b3c136871bdcf0d9fbd02c5873cb0905e3caa7233bdc916fd3d28a5023f261b303ae3213bbc000000000000000014a65b3b3fb202bcf3a4c63b11b6843cb630613c89b3b4b8cf7d1fbc65778e3c0d9c1fbdd0529bbdacba1ebdd9661a3b0152553cb52b7abde82d7f3e1801e63e8c096fbd87d5a53c0000000000000000b38dbc3a3fd37a3a451109bb060368bbbe6fdb3cdeab9f3b18b516bc525b953ba84b273c775167bda223b7bdbae2ae3bca155d3cf42441bd3027e13d4f48093f912c66bc795b043c00000000000000000cc223b9b7d7043b6a058e3a7ebe5abc75d3d53cdcc93b3ba50452bb3ee61bbbe2b8aa3c70393abd562db7bd5108153c407e3d3c81fe16bd998ea13deaa9083fdb49603cb9ae15bc0000000000000000aaa61f3c4de04fbc9ae48c3c5bffba3c2ad5383cced3603b8e323ebce2d1853ba0241cbd220fe0bd1c4aa7bc083d103cd4d1a33cd0e955bdc82f783ea239f13efb51b2bd553ba93c0000000000000000d9ed023ba7c21e3b07f85fbaf5061ab972ddd23c9acef53b0e7e31bc01a257bb72515e3cad3f33bdac36c8bdcaec243cb5ad413c500dd6bcedf84b3d1b1c103f4ce1dcbb17a3703b00000000000000007f4b78b98e7059396b493c3ba6685abc1920883c0a4c3e3c1c9a46b9487868bb517b823c757b91bc3514c8bd95e203bbce4e833b39dd56bc120c223cd56c113fc921b83c1dda78bb0000000000000000ba99ac3aa5031cbb37911aba32d55b39086a86bb63172a3b5df822bb6f2f4c3c534dcd3be529013a0f168e3c0eb195bb91414fba6b9bbd3bb81e363ef3d3923eefdb693bddbd833900000000000000003d47cd3a76a037bbd0a888bb8173773968f4debbfa53843bcb1629bb53be8c3c5f160b3c3971c9bb59f7ff3c264384bb972725bb4772ac3bcf09b73d44a1bb3ea0a2203c61c996bb00000000000000005a98eb3977b2d2b937d0afbbd7856a3ac2317fbb7f4e233b36b86bba7566693c589f8e3b14ab9dbb24641a3df6ae03bb12e6a3bba13e45bb9038d33cdac5df3e270d583b775764ba0000000000000000c02bf7391fb51fbb0a288b3b4b3b7a3b4f47cebac8555d3a622823bb44e0043c1146a5bcc0efccbcd853333c9072c6ba0c14953b791ea6bc83a8803ef35c9e3eca9fc2bc8461703b0000000000000000db80163a975d21bbf2e9b7396ab32b3b7daa0abccfda283b70f932bbc66f4e3c16b653bc18afd1bc44e3003dfbfc0abc131ba339677f4dbc7039383eea8db83e78099dbc3777c53a0000000000000000d2d1dc3931b2adba4808b6bb03080dbb438941bcbd316c3be43813bb35b8af3ce8ee84bb46db91bcad26683d235f2fbc96a5dbbb219c79bbaea7bd3d43e5cd3e30540cbca6d30dbb00000000000000004657553a0442a8bb77f50a3cb920403bc0ea583a2d54af387f83aabbee74163c404510bd22a311bd48acc83975f06e3ae832133cac3214bdd613933e257da83e40890dbd8fdf3e3b00000000000000007975bd3a4b13d9bb0142293cb04f2cbaabbfbd3adcd659b7fac5e5bbe235823c560115bd76a029bd69d0c23b8211ff3a50bd433c99b01ebd05c47f3e6d03be3e74b715bda3ea20bb0000000000000000207d5b3ae02b29bbede8183ac8b2803abd2e5bbcab0c353b316e6cbb360f943c78b1a3bccdc60dbdb6f53c3d221653bce5d085b9a613a1bc0df3263eaff9cc3e9976d0bcf1ebb1b90000000000000000cdb8f43ad2b1c2bb6979413c40b6ee3b23a9ca3a2fdf2b39d605c8bb7b44163c7d9d4ebd03a84abd4cb3c6bb95fbe739a25d473cdb0454bd30f49f3e751db53ed55f48bd53d7043c00000000000000008d37333b70ea09bc43be653c05aad1384d16e93bd332fcba144f19bc6097a53c0ab451bd0a514fbdeae817bcc96bbe3b5209843c920963bd628f903e479fc43e28063cbd6f62c1b90000000000000000d3ea323b1d9adbbb24ab263cb594a4ba2e16fc39570430bbbe5b14bc8caaba3c91a228bd2bca4abd07f97c3c28755c3ab527483cf37c31bd9d146a3e0e8ccf3e29fa27bdd70680bb00000000000000008e24013ba1a9aabbd112313c5f1c7f3ccd238c3978e3c5395746b8bbe45c503c466971bd1f8883bd193db8bbc14984ba0f8e413c154d7dbdd93fa33e87cac03e18d17fbd771f833c0000000000000000e22f7f3b66d103bc1aba293c6335ce3b506c273cc17a78bbe53422bcc0dda93ce24d44bdddae82bd4d6598bc7287f03b9e196e3c67b26cbda7c7883e48d2d63e6bc367bd1323d03b0000000000000000c665593b208799bb8071a63b9dddc93b59c5de3b6e0dacbb680426bc1db0ae3cd0f717bdcfe58ebda12c04ba7b1af13bbccf483c3f8535bd84df673e524ee23e0e6e75bdb58f783a0000000000000000c428a53b0f5e3fbc51f64b3ca292cb3c0df2c5bb758fa33b42383fbca25ae33c4b158bbd900b99bdcb6e6ebbf5fcffbb152b5f3cbad395bd677ba03ee51acd3e53c892bd9e77d13c00000000000000004daa7d3b7a9bcabbd0adc03916856f3ccff26e3c1692d3bbfe4722bc0f97e53c54fd24bd48de92bd35800dbd0adc433c2743123c046870bdd2d26b3eec87eb3e6ad665bd0de1373c00000000000000006172003bd0690bba28d376bbd838503c5ad32a3c8106c9bbd0aae0bbe498653c1cc594bc4ff8adbdda435fbcccae343c4f46fb3b7c610abdec433e3efd66f93e77a188bdf2d0783b0000000000000000df3caf3b36c83fbce3053e3c85d8d53c5dede6ba5ae3803b596144bcecd6d23c6be07cbd585ba8bd4fdd67bc30e272bbc7586a3cc3e98ebd688d943ef539dc3e37e79bbdfee3d33c00000000000000001c71583bb35077bbe0301dbb03654d3c1762b73cbd40ebbb376c08bc5c25863c30b5a0bcc95f9dbde67b66bd4bf2833cba11f73b38a72cbd17ca303e5681033fea3578bd18054e3c00000000000000004a19a83abffd873a9b9994bb1405f53b0dbe933c09b2f4bb036cacbb9610003c3f50a1bb9a9ea6bd2c5c0cbd02d9743cef7fcb3bf189c5bcee97113e1fcc053ffdbf7ebd342e233b000000000000000051bd123b5e85f0bb6473ef3b36379c3c19a41c3cc3871fba94b613bcc68b8b3c5a4432bd080799bdd05e21bdd810063cafc7423c451e5abd94c57b3e6942e93e450589bdf1a3933c0000000000000000d7fc203b773c08bb10bfdcba36f39f3be7f0e13cd02884bb9fe1e3bb67efed3b88f8b5bba0a78abda404a2bd414fa73cb9eac53b7ecfccbc4f4af53d86ab0c3f649058bdd821e83b00000000000000002911873a359a413a72a644bbf5b13e3a1f7ab53cee8fbbbb7ada5fbb67778b3b4e76823b1e148fbd66e058bdc0fc813c43087b3bf4258abc89f3d03da72b0c3f3b6f55bd74ffe73a00000000000000004957023c98e12fbc23fc9c3c30ff973cae835d3c7ef2443ab00734bc1cbe63ba857527bde2ffd0bd49f190bcc1b0513cb510b73ce1d54fbd55d6783ee725f13e0918b9bd8fdf793c000000000000000098dbc43aabea86ba944721ba2105c03bfae0ca3c656ce8b99da6cbbb3c25fd395f04653a25f279bd73e098bd0886ac3cb51cf73b981ca9bc31efa83daf950f3f17193fbd09b2be3b0000000000000000a534673a04256ab821490ebb8790b1ba5e947c3c39db8f38033405bb0e37323b5e28da3b061d20bd21a785bda31f263cbe3cf63a0dab3abc83d73a3dae4f0f3f0078c7bc9726253b0000000000000000e515ab3a3a6d1fbb78c61dbaeb14a03937b598bbfc91283bd3e818bb9383463ce907bc3bea05773b81598e3cf45589bb40e5d4b9097ccb3ba71e363ec3a5923edc11393a2e1b853900000000000000000926cc3a458827bb596025bbf09994bb0c9782bb351d843b9bb336bbc6d98b3ccd16ab3b7874243cd5ffff3c15a1ddbbcda687bb3d020a3cba15b73d4f63bb3e1d7ec3bbb5469039000000000000000043d7a839b770f8b90dceb7bb7d45a6ba77fe92bb311e3c3bcc2233b913466f3c050454bb7b290a3bfb812f3dc6df9fbbbcded0bb9bbc8c3b01efd43cc3b9df3e38bfabbbea1ce33a00000000000000008ae5f639361923bb5f20953ba069703b534cc6ba716a5c3af4a61fbb69d3043c1e1fa6bc8c9ec2bcbf56333c781dcebad8338b3bd646a5bc6ca8803ec45c9e3e59eeccbc16427a3b0000000000000000e168163a74fa32bb4326a23965a6c53ac2000bbc63dc283bed5e21bb06854e3ce88c4dbca50d9dbcffe1003df9ad0abc2601b73954c253bcc83b383ee18db83e55b2d1bcabcb2b3b00000000000000000824d13964e60cbbbe89debb6b6e07bb03dc38bc15a27c3b75c5a5ba6f2eaf3c19f36fbb0ab416bce1726d3d2d8848bcea67bbbbc0ff7cbbaabbbc3dd63ace3e21b396bc5181fcba0000000000000000c744553adc7faabb6833133ccddb3e3b88006f3a41c6ae38443ea8bb7f71163c3b3214bd31880dbd978dc83927fc583adef50a3cdd4410bd9613933e187da83e22a211bdd31c403b0000000000000000cd72bd3a97c4e5bbdfbc433cfbe920bbcd0fff3aaaed59b7f511d9bb9035823c83b01ebd52b715bd69d1c23b27bebd3a9641293c4a0115bd00c47f3e6503be3e58a029bd1e4e2cba0000000000000000cf86593a86e969bbd94ea6b98dfb74b997a755bc4552393bb97b27bbb38c933cd536a0bcd804d2bc0c1f3e3db47a5dbcc110083aedd0a2bc53c7263e5113cd3e4c890ebd07ec8e3a000000000000000085b4f43ab204c8bba15d473c2ad7043c6bffe739e6dd2b3995b0c2bbc543163cd90454bdc85f48bdc1b3c6bb16aaca3a5f79413c7b9d4ebd32f49f3e731db53ef5a74abdefb5ee3b0000000000000000de37333b014f19bc4609843c6364c1b9e76bbe3b1833fcba78ea09bc4197a53c830963bd21063cbd0de917bc6a16e93b3bbe653cfcb351bd618f903e479fc43e04514fbdb9a1d13800000000000000003a1b323b14c613bc8482473c3e367dbb6f82503a988e2ebb35cfdabbde50ba3c184c31bdd83328bd6b0f7e3cd352e539a3fc253cc07128bdd8066a3e4093cf3e92024bbdd57b9eba0000000000000000d025013b3c47b8bb7e8e413ce11e833c004284ba27d6c5397daaaabbab5c503c874c7dbdc2d07fbd2b41b8bbfd418c393013313cbb6871bd8d3fa33eb2cac03ef98783bd511b7f3c0000000000000000db2f7f3bdb3422bc9c196e3c0d23d03b7987f03bcb7a78bb5fd103bcb6dda93c65b26cbd6ac367bd4f6598bc536c273c17ba293ce04d44bda7c7883e48d2d63eddae82bd5f35ce3b00000000000000000bea583bf9ac25bccb48483c308a803a0c35f03bb893abbb1b2e99bb6c82ae3ce86635bd9a9175bd91eef4b996c8dd3b0aa5a53bffd717bd82d7673e7952e23e03f88ebdd40acb3b0000000000000000ab28a53b43383fbc342b5f3c9677d13ceffcffbb748fa33be05d3fbc715ae33cb6d395bd54c892bd9e6e6ebb10f2c5bb3cf64b3c44158bbd667ba03ee61acd3e930b99bda592cb3c00000000000000004daa7d3bfe4722bc2743123c0de1373c0adc433c1692d3bb7a9bcabb0f97e53c046870bd6ad665bd35800dbdcff26e3cd0adc03954fd24bdd2d26b3eec87eb3e48de92bd16856f3c00000000000000009645003bec52e0bbfb76fa3bd87e7b3bd7f1333cd748c8bbe2fa0abafb77653c6b4a0abd57b788bd3a535ebc54372a3cfa6e77bbf8a094bce13c3e3e646bf93ebc0baebd7da8503c0000000000000000df3caf3b596144bcc7586a3cfee3d33c30e272bb5ae3803b36c83fbcecd6d23cc3e98ebd37e79bbd4fdd67bc5dede6bae3053e3c6be07cbd688d943ef539dc3e585ba8bd85d8d53c00000000000000001c71583b376c08bcba11f73b18054e3c4bf2833cbd40ebbbb35077bb5c25863c38a72cbdea3578bde67b66bd1762b73ce0301dbb30b5a0bc17ca303e5681033fc95f9dbd03654d3c00000000000000002707a83af45aacbba257cb3b49a0233b7eb7743cf68ef4bb39ff873ad30e003ca984c5bcc8c67ebdbc520cbd43b2933ce6a594bb8b3da1bb0997113e6ecc053f2da1a6bde727f53b000000000000000051bd123b94b613bcafc7423cf1a3933cd810063cc3871fba5e85f0bbc68b8b3c451e5abd450589bdd05e21bd19a41c3c6473ef3b5a4432bd94c57b3e6942e93e080799bd36379c3c0000000000000000d7fc203b9fe1e3bbb9eac53bd821e83b414fa73cd02884bb773c08bb67efed3b7ecfccbc649058bda404a2bde7f0e13c10bfdcba88f8b5bb4f4af53d86ab0c3fa0a78abd36f39f3b00000000000000009904873a44cf5fbb01ef7a3b505be83a77f5813c0d80bbbbd4a8413a66778b3bf2248abc4d7155bd02dd58bd9275b53c62b044bb457d823bd9f2d03dc42b0c3f01158fbd7a0b3f3a0000000000000000e35d023c361034bc3711b73c0bd7793cfab7513cd02f443ad2e92fbca44063ba68d44fbdb217b9bd09ed90bcb88b5d3c12fd9c3c747427bdc9d5783ed825f13ea2ffd0bd3cfb973c000000000000000098dbc43a9da6cbbbb51cf73b09b2be3b0886ac3c656ce8b9abea86ba3c25fd39981ca9bc17193fbd73e098bdfae0ca3c944721ba5f04653a31efa83daf950f3f25f279bd2105c03b0000000000000000f13d673a433005bb8322f63aea35253b1318263c33a49238bd6e6bb87539323b8bab3abccc79c7bc8ca685bd9a907c3cec490ebbc32cda3bb2d63a3dbe4f0f3f4d1d20bd2380b1ba0000000000000000d8dfae3aa16d21bbeab4a1ba74f4af399efa96bb1c4f173b297509bb21214d3ce3c9d13b1178f53b352c813c4a6368bb38a832ba67a4b13b2d663a3e3314903e7b5a5eba030af2390000000000000000b833de3abac04abbe84d9fbb8ad4b5bb5568353b5c47e53a189213bbafeca13cbac5b43bbb7f063d42a9943c081699bbe12194bbbd26173c4a40b23d228db53e2ff715bc4449493a00000000000000008ced4c3a1333fbba0bce79bcc4179bbb3edc0d3c40671e3a2912a8ba5328ee3c578ce23bd6ab183d4569cf3c75c6b6ba9a78bfbb8d84c83b7f522e3dee81d03eaefcf6bc864682bb0000000000000000a1b1e6397d2029bb4ae49b3ba71e733b7487c3ba410a373a943a1bbbe8f2033c373da5bcf135b1bc51cb223c76d0d1ba26e3863b22d7a4bc56df813ee8899c3ec7f9cbbc5549763b000000000000000072ca093ab97567bb77a826baa2cea23a3c0cfebb6b02ea3a7b0103bb53225f3c826a49bc6f8c60bb106bcb3cf35ce2bba25b4cb95efb61bc6c3e3f3e00c5af3ec4e5c7bc62333c3b0000000000000000a80f5f3a2795debb35be70bcb8952d3b5ac99cbbfcb5013b9b88a4ba67530f3db9976cbb56e8483c72d3253d845f32bce1f1c1bb4c8f32bcd610093e8416b53ead9a99bce98f4fbb0000000000000000db513d3aeb2ea3bb7a54103cac286c3b9c647d3906e81e3920b49dbb88a8103c3eee16bdedca08bd7ae29639d9d0b139bb7ffb3b57380dbdb30a943ea25ca73ee5ef10bdefe5523b0000000000000000f91a903a8833d8bb2cd02d3c072a91ba85fd853ac5413c37df23acbb5c7c823cf93629bdd579e0bc2bb91f3b24fdfb39394fef3bfccc12bd5adc823ecb31b93eb95c27bde3470f3b00000000000000003b56403a61b6adbb895264bb40d3d6ba121238bcb096d53a41dbc2ba4284ab3c475bbcbc502b243b518b123dbfdb4bbc5fc9733ad699c2bcc2603d3e73dabb3e46e907bd5d97983a00000000000000005e0cce3a40d4aebb98a43b3c67c21b3c765befb9596ebc395ef3acbb138a043c9f5c57bd98fd42bd1d9bd8bbfa63de3a858f373c28204abd4acba03e923fb43e1d904cbd0a11eb3b0000000000000000a5280c3b382508bc469f613cd326533b3d7e553bdaebd3ba9f82e1bb4d74a53c024675bd333717bd54ff5bbcbd1af53bc392353c211b47bd3d78913e9736c23e4b5a51bda2df0d3b0000000000000000faa2083bded114bcd9011c3c5e0626bb5defd83a364a71bb8fd5a2bba013d83cd61455bdee45b0bcb2adb73a0002923ba8b30d3ce61231bda404753e04e1c93e3c1a4dbdea061eba0000000000000000727fc33ac97e98bbc4f83a3c3fa1893c3d33ddbae5ae8e390f9f93bb5860363c07bb81bdc4df73bdef05e2bbeae3af3a5a4f2c3c043568bd03eea33e8849bf3ee3c982bd93746c3c0000000000000000e7f1453bd41514bc480f5f3ce4f5203c6cf34b3b17ff4dbb472ccbbb5c12b13cbe3c8cbd5d3c2ebd3661c7bc0c534c3caed0e23b732830bd407f8b3e52efd23ecc0486bda0b9ea3b0000000000000000d5a5113bdc9d1dbc9a8a4c3c50b8b7b9ea891e3cb19708bc824b2cbb65f3d53cf84179bd34f6ffbc4eb8c5bc3d6c983cb50bb73ac4e70bbd23076b3e7906df3edfb689bd3d84413b0000000000000000a14c213b7af1e9bb5c15453c8423c23c703e94bbfb83143b08f4debb09e8963c176b93bd25f380bdfe8261bce65e813a3845243cbb0d76bd3e779f3e3c07cb3e66ed91bd01e4a83c0000000000000000d2f81b3b31c928bc0295683c94674a3c64fd943b21c302bbbe780bbbc0f0b53c999d98bd00de02bd634a42bd8f3e893cd4f121bbf934d8bc2a9c6c3e8999e73eb1e08fbd81063e3c000000000000000032e5943a1c3ef8bbc9a65b3c1e13b4bb6db87d3c79eefbbbe149b03a3c50813cc99666bd629895bca7885abdc679d73c60c2a0bb57e905bcd917393ec9a2f43ecb7292bd8cfba13a00000000000000003d57433bfe1e01bc75d1533c1a0bcb3c3c07e5ba533f5c3a1dabf4bb60f2963c395092bd03f386bd524bc0bc8410d93b0c6b0c3c533459bd04ad933e368bd93eca40a1bd649ead3c0000000000000000ba01cc3a47881abce1cb753cc7644f3c04dba13ba5e796b8dfb2173a2a6b423ce9b082bda656dbbcd1938ebdc294c53cc53d97bb80d63fbb35fb2c3efa5f003f3cde8cbd2a5fa13b0000000000000000a3d6a7395593a8bbb0905e3ce3213bbc02c5873c016c90bb0fd4113bcd526d3baa7233bd261b303acf0d9fbdacdcf33ccf0ce1badbcb2b3cc916fd3d28a5023f136871bdb10d04bc0000000000000000c4a55b3bbc7d1fbcfe51553c85d5a53cdd661a3b0eafb4b835b202bc62778e3cb72b7abd90096fbda5ba1ebd9c30613c19a5c63b179c1fbdea2d7f3e1801e63ed2529bbd18b6843c0000000000000000b38dbc3a18b516bcca155d3c795b043cbae2ae3bdeab9f3b3fd37a3a525b953bf42441bd912c66bca223b7bdbe6fdb3c451109bba84b273c3027e13d4f48093f775167bd060368bb00000000000000000cc223b9a50452bb407e3d3cb9ae15bc5108153cdcc93b3bb7d7043b3ee61bbb81fe16bddb49603c562db7bd75d3d53c6a058e3ae2b8aa3c998ea13deaa9083f70393abd7ebe5abc0000000000000000aaa61f3c8e323ebcd4d1a33c553ba93c083d103cced3603b4de04fbce2d1853bd0e955bdfb51b2bd1c4aa7bc2ad5383c9ae48c3ca0241cbdc82f783ea239f13e220fe0bd5bffba3c0000000000000000d9ed023b0e7e31bcb5ad413c17a3703bcaec243c9acef53ba7c21e3b01a257bb500dd6bc4ce1dcbbac36c8bd72ddd23c07f85fba72515e3cedf84b3d1b1c103fad3f33bdf5061ab900000000000000007f4b78b91c9a46b9ce4e833b1dda78bb95e203bb0a4c3e3c8e705939487868bb39dd56bcc921b83c3514c8bd1920883c6b493c3b517b823c120c223cd56c113f757b91bca6685abc0000000000000000bfa99d3a9ffa28bbae0e0f39afad063a3e1988bb3a2b063b4fc90ebb6e8a473c0cfde73b2654653c410e663c296e48bbc40a78ba400ea13bf1e53e3ee7a98a3e0291cdba22b3923a00000000000000007b81d83a71935ebb9445c2bbae1c8cbbbe89e43a93fe873af2d529bbb0dfa73ce84db53b52289c3d46d5313b5c53e4babae708bb1fc02b3c8f5dac3d7a7da43e08f87dbbd36bbcba000000000000000008d02d3a74d2abbae5f83fbc7eb0213b80761dbbf51c043ac671f9ba1b47c93c9cfda0bb0d15ff3df813ce3ce4dc95bb4d9a0abb9d537fbb02a0273d6d5bab3e5841b5bcfd9abc3a00000000000000003371d439bf8524bb82009a3bb3ed813b7fc2cababe5a2a3a035015bb9de5023ce36d9fbcf98a9cbc9ba4103c9e1ad5ba3f7a6e3b287da5bc7cb3833e1867993ec154c5bc322c793b000000000000000004f3e8393d5c92bb16f805bb04a40a3ba889f8bb4283a03aa969aebabed25f3c41ea0ebc97ce713cb9778c3c28e4b7bbed8590b929d562bc8cd2443e9c99a33e9b5f9fbc1614133b000000000000000013985b3a7628f5bb9d7595bc12c5283c9d9278bbf734963a47b4b1ba15ddf73c7bd19ab9700a8f3d46cbed3c6ab443bc280800bbfc513abcbb71103e82dc923e758740bc25a292ba0000000000000000a0a1333a94fb9abbc66d063ceaee9b3b01feb2b906ff53391f7490bb97e8043ca3ce14bd909f05bdb4f42039c3121ab9e9bcda3b9e030bbde96c953e1c86a53eea0910bd8830763b0000000000000000163e3c3a9e20c8bbd80ff43bcd6e013b5bab62ba9c5b843939036ebb0d12773c973622bdd6789dbc7bc071b94e919eb9d701983bd01d0ebd0115853e5efbb23eeda31fbd43c2833b0000000000000000c58db8393f90d9bb36a00abc8b55133ba8e10cbc077fa63addd5353a068ca23c7362a7bcc338013dce7c823c62ad2dbcc3ae81ba84bbbdbc35a6453ee302ad3e72f9e1bc4c826f3b0000000000000000ffd0b23a931da0bb3a232c3ce256363c6ed6c6ba8ff98339de8c93bb041bf23b9cb159bdebea3bbd2bd9e1bbaea6023b3d63273c550447bdffdea13e9171b23e9fbc4abd37e4f13b000000000000000094aac93afe31dabb8bec0a3c29ed1b3c53d366bab1cc7aba0503bdbb2e05a53c406f77bdab57ecbc23b989bc5455f33bab860b3c60523ebde551923e76d2bd3ec6fa47bdcbc6633b000000000000000000c4913ac3fc34bcdb32a739a112223cdf41003a278335bbaecd92baa35a0d3d964a52bd2f0a0abc303cacbc7825d73bfe79013bb2284abdbcf16e3e47b0c73ea41616bdf260653b0000000000000000c4b3993ace686fbbaa502d3c7f68913c9ce93bbb1b08c03988aa82bbeec5203c040584bd360e68bdeb6fe6bb79eddf3aa911273c849c63bdaed6a53efb71bc3ea56481bd2a17633c000000000000000021b0123b9e46d2bb097cf83bfd6e9f3c5dfcbcbbe4d16cbab2afc2bb2b07ba3c2bb29ebd65fbe4bc650ce6bcb835503c6b5fab3b750022bda3388f3ec193cb3eba4b7fbdd79fea3b0000000000000000823fb23a3cf8e2bbf3a46539f4148b3cf7ae17bbdb85a5bb0deb14bbf210093dde0791bd115cfbbb95b22bbd9a04bc3ce79210bbdce807bd5842693eb185d83e04dc5bbda780c4390000000000000000b84de03a76c3bebb8c5f363cafd2cc3c4a97d1bbcb21113b7b43b2bb059d843cf0a097bd259a71bdc69561bc3af61d3b1b9f1e3c71d16cbdbbeba13eec3ec73e20d38fbd9098993c00000000000000009454063b15fa1bbc35d3213c7fe2e63cffbf56bc4ecb8d3bb7200bbbbd3cd23c1b3cc1bd9d6938bca0414bbd1e0f663c0ab06ebb9ae3babc2d037a3e868edc3ef9d97fbd310f213c0000000000000000feef723aec63dcbbaf66ee3b2cd5503cee881ebc41efe63a183bcb3912adba3c1d4dadbd25caf03c55f68bbd9a81d53cbc807cbba30a4dbb9ff53c3e36b0e43e680446bdb37600bc0000000000000000174b223b3c47e8bb0ca4493c3b36e03cfa6dd1bb8c700e3b811cddbb8545903cd12e9cbd758776bdb3e4b7bc125eef3b543e0d3c2c2456bd4d57983ed5ded33e09339ebdba399f3c00000000000000005c680f3b5ef344bc096b7b3c0c90fd3cc247a9bc21192a3cfbf43d3a1bcd953c9700c6bd6664b93b58d88cbdecd9883cb9c1cebb0f300b3b9c793a3e2e34f23e9fe861bd2811083b00000000000000009a40ce383eddd2bb981b893ca7cf06bb811089bcc04d343c54df1b3b67a5de3b5376a8bdca67a33d12fdb7bd3c83923c960f31398ffa8c3c1c5dfd3d40b3eb3e88b5c9bc3a7168bc0000000000000000817c573bb1e914bc270e493c025ad13c3b87b2bb654eb13a48df04bc60df903c7a428ebd167054bddc4610bd87dc7d3c665ec63b06fe1bbd0e99853e7066df3ef7d39bbda30e6c3c0000000000000000f491393b540964bc418d9a3c9270db3c7b91d9bc77ee853c96db953a3baf183c8a8bacbda773bf3cdfd7a4bdcf6e8b3c7e4e52bb4b3b923ce9dbef3d7e1a023ff5a634bdfed5cfbb0000000000000000e16f01ba5010bfbbded6b13c8ca606bc94c3dbbc1c3aac3c47216f3b527938bb0a15a4bdc04bdf3db88fbdbd63cda73b2452ce3a54cde33c2aafae3dce12ef3ecbe74abcdf6d53bc00000000000000001ed2433cddce2dbccc11683c65faf83c3e9eacb7ba15bd3b5b3054bceae9133cd1fd70bd34f9aabd30599dbc5504383cb853873cdba62fbd6080833e1a54ea3efa2ce3bdc9a1cf3c00000000000000002e44b53b616388bce3ef853c3857a73ca538dfbc29d98c3c61850d3b0eb8edbae8c74fbd232bb63cf111aebdcfb6c33c134e22bb0610ab3c9d95073dccc20f3f6cd40fbdfe5b8dbb0000000000000000362be2b80dbc05bb558c823c138443bce89b27bd47e9dd3cb140783afc1427bce29101bde511fc3d06adadbd347dfeba6724b63bfbeaa43c951240bcfbad023fc347893b513b46bc00000000000000004054a53a517e60bbc383603a3229073bb70fadbbdfe8df3a975605bbc031433ce660063c9a0e8a3c4cc84b3caf2f22bbe971fdb8fbbaa83b3d02483efb67833e7d3c8539d56e2e3a0000000000000000796fcf3a38bbabbb5300a3bb62c00b3c0ea489bcd1a5ed3ad9a06fbad07a833cc680d23bf827063e29af5dbaaed42bbbb893163a2ed2643c2a8ea83de1d5863ea1daf13b82f5cfba0000000000000000947d78393f4e82bb51824abc1533963c0155e5bbea39c7383e20a939dcecc63c64cf583bfaa0693e7b3669bb7df528bb9d9ca6ba057c183b7bc2253d250f5a3e8a92223b592811bb00000000000000002d86ba3970662bbb5b95993ba83f933bb6c6e9ba1eeb023a1bc8fdba039ffd3b38bb97bc16858ebc1f4e003cf215c9ba5992613bf6eca4bc4cce853e3df4953e11f3bcbc2ab8733b00000000000000001505d33950bdbcbb264ebcba04e48b3b2aed0fbc45635f3ae07a73ba1f9b363cf960c5ba21ccdf3c39ef3a3c1ca68ebb07ea9538253d44bcd70e4c3ef431953eea4752bcaeb5bc3a00000000000000008bf0303a45622bbca48758bc41f9853cdc6966bc6250253ae68955ba00caa93c39180a3cc0e3093ed05b973cd5d41dbcb1f95b3a6de73abbebd2063e23705e3e3df6683b99a50fbb00000000000000006ba20b3af0a48ebb7e4c023cd8ddbc3b5c71a3ba2ade4339a03b77bb4301e73b0cca12bdbd1a01bdd983083a333706bab270c03b09b308bdfc0d973e41fba23e58570ebd6383873b0000000000000000982dd33931aec7bbf49fa13b40f0af3b765834bb3897ce39ecb111bb9e12553c66d80cbdbfcc5fbcbe4a0fbbb9cd70ba0762423b7e6607bd83b7873ebdd7aa3ee2eb0fbd798f963b0000000000000000e7e0d6b7a34e1dbca1eb42bc86251d3c8c0c20bc66ccb23a2ee34d3b8b1a8e3ce5112cbc00684e3d80fbdeba860515bc10116fbbff30b7bca4554c3eab7d9d3e036685bcb87dc13b0000000000000000ce4c903a680089bb63c0233cb17f463ce71622bb8e7aea39564777bb83b6bc3b4e3c56bd4c393abd178acabbbc99b63acb291c3c2d6243bdc047a33e9a26b03e5f3c47bdd958f33b000000000000000047e4853ae8449ebbb891533b32bb773cef1f90bb3167edb976ac95bb6aa08d3ce63d64bd1642c7bc701c87bc4136b53bdbe3c73bfdae32bd5266943efa42b63e904e36bd8c969d3b0000000000000000e4424fb9fd4059bc83dc1abc33e5bd3c4517743752a68639a7a47b3b0e60213d98892abd586e26bb231320bdc8caa0ba2f5505bc914065bdda876f3eda2cbf3e90bf90bc0c9a783c0000000000000000c50c793a29204fbb9d1d2d3cabfe943c235f6ebb0ac9ef390ac067bb37b90d3ca37f84bd5a4064bdeda1babb73a9b43a75a8263c5dd561bd5bcca73ea080b93e38e27dbd74bd573c00000000000000004c8ed63a664150bb831784b934e1f13c20b954bce9dd27397a14c6bbe3eaae3c9a4ba0bde632b5bc37e1d0bc9ac72f3c8e17af3b0fe121bd5d3b953edf4dc13ed0d869bd36b9eb3b0000000000000000cd38473a67c480bb026f69bc5e6b293d9379a7bce479c8b787ffe6bae75c093d097f9abd57d8243c1a6638bddd99873c94cfaebba16cf5bcd098753ede38c73ec4f51ebdb09f753b00000000000000000e15a43a2e8298bb442f243cc5f4cd3cbb13f0bb37c7e93ad14996bb87d9693cd32496bd18246ebd05d11ebc35f10f3bea59243cc8456bbde38ba53eda24c23e57748dbdfd4a8b3c0000000000000000f790173bb492dcbb41a3803adc712f3d8a1dc9bce684c73be2069ebb937eea3c7302d0bda40b1fbcf14c1dbd7183253c565579bae801e2bcdf36893e5fe8ce3eeed36ebdddd81c3c00000000000000000870843abf4a87bb229f09bc74fd5b3d9e5c49bd093b453c708087ba6bd6cb3ccf9fdcbddb775e3d13c04cbdef39353cbad768bb9893293b6e2f583e9788c73e6920f1bc46aee5bb00000000000000002f5e113b343ccdbb2a18493c2eb4ea3c79ff1cbcbf8f4d3b29f8b9bb1863703c013e9fbd53f974bd4c3d88bcbcfba73ba34e163c711a59bd4c009f3e59dfcc3e18209cbdeab99b3c0000000000000000277f743b8cf63ebc0457123c65274e3d84ac1fbd2397743c2a9439bbf474e33c7edaf4bd8fa2fe3bc81b43bd11d0063c3ec3c3bb4926abbb0494633e56dedf3e1bd763bd1fc0ce3b00000000000000006867113a08e5f6bb6cfb033c96d7503da64395bd4767c83c86c3fd3a608b6c3c1bfe01bee8a8e53d18f756bd5163a8bb8d65d0ba6e4aa13c30551f3e0f9ec73e2c5cc4baf25b1ebc00000000000000001e2d193b947cf4bba3c6383ce22be83c90662bbc98ad673bb5a2cdbb6a2e733cde5a94bd548750bd67afe2bc7ca5423c8218d93bb76126bd17be8e3e773ed63e52559abdbbb3773c0000000000000000f302d53ba11389bcaaba8b3c7c593d3d052342bd05a6ae3c58187bbb6cc0bc3c815cf4bd1324c33c0bc250bd2435253c5b649abba3374b3c122e2a3e3ab6f13e75685fbd6c6aa2ba00000000000000001e7ec939efb424bcd8fdc03c54ea333d950fb0bd3b56113d1711833bc065d93bb97910be7211153e6b1d3ebdbe509fbc8b2328ba11ece93cb31dfa3d7b76c93e0cccf23b1862f6bb0000000000000000c513493c7e5859bc3b617c3c40b00e3d45f4c2bbad87c63bad322ebc96455e3c2f218fbd2633a1bd7c2471bcc046413c7fb68e3cffdd51bd043b913eca0fde3e0ec3e0bdf547d03c00000000000000008277173c11f8b7bc42acc23ce428e23c820150bd38e7be3cd6a1b4ba56083b3cdd4dbbbdc10ac23c4bbc1ebdadf0c33c204ca3bbe8e3843c85f0a33dcc18093f59af88bd9de6ec3a0000000000000000ef30ee3a05355fbcc569233daa86503ca148bfbdf389343da3db6b3b6e3624bb0bf4e6bdd5d4503ef8d209bd0928cbbc5b44623a7b83e93c3104033dfdbcd23e13b3f43b41a2bbbb0000000000000000c907a43a7cab89bb8141703aa9a6443bf3dfbbbb48a6ca3aa5b0fbbaca0e483c9586273c9146903cad473b3c42acedbac056b2b56afca43b530b533e0ccf773e7ecbc33a09ba5e3a000000000000000085f9a73aebca0bbc6285163b55ceed3c75f29abcf336c13a60a9c138e0042c3cb8f3c73b12a4d93d8b863a3a94ff57bb4be4be3ac2588c3c5ec0e73ddbab663ec592893ccc3857ba0000000000000000e3953239d73d81bb7f4833bc7314f33d8463d7bc0df6d5b7c8e5df39ffe1be3bcd670ab980702a3e06a3ed3ba9a4dcbb2888663b30fd183c6368883de1a10c3e05e1eb3c416d703b00000000000000006c12a73953bc27bbd4439b3b0bd29e3b755306bb0816eb390ef3f5ba4a9cf93b518f8fbcc05085bcaa46f33ba48cccba97c4523bfe25a5bce35d883e1e11923ed473b2bce0a2683b000000000000000019f2a63931a4ecbbe102a73a89dcf53b0ab616bcc24b0b3a72ef31ba5eaef63b7fcff63b1ce5dc3c8a09ef3b25b436bb1b90043a97de0cbca4d0583e1896873e54360cbcbf4f883a0000000000000000918cab3989c95dbcac9ef5bb1b57633dd7bec3bc9f285b3980e7afba9f9b3c3cbf48b63cd7b7bc3d5c98cb3bcf8fe5bb4f42983a46d8513c3ed1143e6ee0423e5764783c2ec9b3390000000000000000a28ee339593b81bbc18ff73b9e08e63bd0b41bbb6cd88639feee3ebbf5a2b73b77c10dbd5cbe01bde664c33a53fe8fba0ce0a63be31107bd46ea983e1a46a03e6b080bbda7aa8f3b0000000000000000925572397e1acfbb433a923b2c13023c85cda0bbe7cb8f392499b6ba9edb143c4d1cd8bc59783bbc5a05c6ba8a536eba6592123bc4e4fabc095f8b3eee28a13eb94903bdd12e8e3b00000000000000001d7326b8c4823ebc1bb10fbc1a37903c89f95ebcb2a1463a8b1e133b35a5053c9e83813b84513b3d2c3208bcb86fb2bb6273deba2a457cbcd6ca5c3e98cf8d3e70c728bc1c57883b0000000000000000e3fb7b3ab66c6dbb8ea0253ca600473cd4aa3fbba750123ade503fbbef085b3b30b44ebdf3603abd175f94bb48c49d3993520e3ca8fd3fbda836a53e96f2ac3e0f0243bd59ec003c0000000000000000e843243acb2984bba114ea3a3951873ccd0ed2bbc33492b99b8f4ebb36e02f3c1e903dbd804bc0bce12e3fbcca11403b6c63a23b8b3d23bd63c7973eb040ac3e577924bd57e39f3b00000000000000009b42b0b98e110abc64c844bcc638de3ceb5c19bccb30a639df5def3a943eb13cc55cedbc4802fc3baf2bd4bcfbe90bbbed8661bbb09925bd48ad803eb3bba93e478fb0bcf97e363c00000000000000007f063d3a06e30abbdae12d3ce93b8e3c41366abb9d4d303a10cc47bb0849d83b2b4f81bd37b867bd9d1e38bb44878f39b18b2d3c924463bd5c89aa3eb89bb53e22a275bd3038463c0000000000000000b8f54b3a3ca425bab2ff42bb7ea6ee3cbf1148bcfdca85b91efb94bbb96c6f3c5dc98bbdc632d8bc1e928cbc4fd6d23bf576c73bf49a2abd02ae9c3e6025b63e66b856bdf7dbfb3b000000000000000011372c3a4da54e3bccc003bd1a01823d8b2503bd231cbeba05e26dbb3c06d63cf23190bd8448783cc667fabc641b173c24be0fbbcf5ac5bc8eff853e7d71b13e6a9b11bdb97fc43b00000000000000001c76abb9e13bd7ba118d073c8497a43cb53092bba65f94b8d0af31bbd8ad4b3c2bcf8bbdb7606cbd978f1cbb36c4f13a5b3b1c3c0c296cbdff00a93e2ad9ba3e00be86bd9981623c000000000000000098c97a3a5f1ae9ba97c260bbbff51c3d407699bcfa661e3b1637a8bbedf4c33c57afb7bd8f9bb0bc6886bdbc4ee9e13b7980483b576417bd0f85973ee743c13ed3c971bd8c982b3c00000000000000009d25c53a8eb1913bab813abdff44d03d902d84bd6fc0113c189c9cbbd05b0e3d0f23e1bd8883253dfb750dbd2297a33b5c6952bba9a692bb23fa763e1ab4b43e54e1b3bccf92f3ba0000000000000000aa6eeb3a0f73c1bb14f5533c0ef2e43caa4331bc1fb9553b11ab88bbb574373cf6fa9bbdaaf07cbdd1a420bcf95f383b73d42e3c183167bd4fcba63e2a65c43eb43c94bd2b0b8f3c00000000000000006076ea3a9a36b0bbb1ba953b8bfd343d4659f6bc4c4e233c33ca9ebb0d1ce93c49deeabda499efbb9ec1fcbc4627ac3be14002bbbe3bb1bc784e8a3e9eb2ce3ebfea81bdeff3463c0000000000000000245a163b91bc00b9cd3e0cbdfa1bf03d09ebc6bd4457d03ca00d66bbb6060b3de6e217bed609ad3da755e5bc4cc434bc9ca14fbbbe426e3c5b194e3e363db53e929a6fba7367ddbb0000000000000000af206d3ab360cfbb71ba4e3cda45e13c608c46bca8da8f3be37258bb0131203c1f3294bd36df5abd4e869bbcda23ed3bddac013cbe7f39bd948b9a3e587aca3e28e491bd49617c3c0000000000000000034b823bc4c735bc3e4b733c45081a3dca0c15bd96e28c3c1f7401bcdd09fd3c13adffbd614e383c9f2a17bddec3fc3b873546bbee47c4bb6e006d3e8cd9dc3e92a88dbd8e24143c00000000000000000efc523b7574a3bb4f4316bc3e37df3d9b68dfbd49b2243d7c0b15bb4138f03c26063cbeb6f3e13d31b9b4bc525bc6bc9091a5bb1503023d24a8283ebc7ec33eac837dbb07f8c4bb0000000000000000ab6a0e3c316e88bcc7d0a73cd6010a3db8a30ebc61c8743b0dd1b8bb81069a3c36aca4bd6f6691bd21c20abc64a7283cf38f843c502182bd7d89a13e56fdce3e4e3fd4bd3928d83c00000000000000008bea323c9b61bfbce7990c3da12d093c5c3022bd3952b73cf4ad30bc76b5a13c0f2bebbd4698243dd5ba03bd1380b73c121b0c3ceb0437bc2b08323e9d7eee3ec422acbdb42f1a3c0000000000000000e356b53b84dea9bcb681173d91bd263d0872cbbd2075633d27f72bbb542ae43cb38a5abe77c55a3ec32caebcdd59f2bc24b214bcac824b3d30a66e3da337dc3e58d79abc91725dbb0000000000000000b0c8b23a21029dbbf9aeda3af036413bcc13b8bb7996bd3ad4d102bb84e83d3c84ee563c2192813c6c2a3e3cc338f3bae9c4aa38d0fc933b6fcd5e3ef2486a3e8a783b3bfd91633a0000000000000000f561693acf3e02bc31cf263c3985bf3ca12e59bc23e9633a14e6debaa5304c3cb09c9f3c2cae663d1f91133c9e2c29bb10e47a3ae9488b3c60cf1d3e9b30503ea571883cf202613a000000000000000003550c3a6bdf2bbc4335f7bb7291143e70cebbbbe034adb86c591c3bacb210bc2279e0bb5f341a3ece3278bc5c71cebb0ea89a3bee8b203d8e13323d0d4af13d60525e3d51c73d3b00000000000000008a4dbd3984ce2fbbb782a13bea14a53b3fd71bbb9d70c439cdc3e1ba72c1f53b51b186bcac9f82bc571feb3b1ce0c8ba9c615a3b2999a6bcd71d8b3eea6f8e3e7e74abbc2c825b3b00000000000000009e7a90396e130ebcf0f3a83be2d1f93b14ae13bcbd58a639c82673ba4884a73bdb96803c092bbc3c42b7993bc213ceba2aa1773af7f4cfbb0e88673e3fab783e2f6bcabb35c97f3a00000000000000005c9bcf387e1083bc3d6c923c5d1d543d62a59fbc13c3fc37688fb9ba3d0c0eba5cded83ce4ca5d3d9d825fb9ab3256bb5739fa3a530a9c3c70012a3e9f81393e5363a63cde87073b000000000000000026eec739ca587ebb1d69fc3bbc4def3b933755bbc114a039464217bb90c0893b28bb06bdd5da02bd39733d3ba27ee0baddc49b3b2f6107bd16f39a3e698c9d3eb79108bd4b7a933b000000000000000083c52639930ee7bb255fd33b5d24093c3bf7d7bbdce63539d96f8bba9465993b5e2396bcd02c51bca833743ab62e75ba3bee353b6455ecbc896d903ea18e973e7a61f2bc459e673b0000000000000000179792372b016bbc9bbd913bb7cd933c31ab85bc1c6ea038f59deb3925913bbb59d4b43cc6881f3d88d914bc0adaaeba1549833a765008bc9fdd673e652b7c3e1f6beebbf080ea3a0000000000000000d2053d3aa6a144bbf0ac2d3c9dda3c3ce4ca4abbc2832c3a3d4df3ba8724053a10e146bdd9e13dbd17861cbbe62c3bba9b95063cbd363fbd547fa73e94f0a93e41f33ebdb1c7023c0000000000000000a0757939924bacbb6177c13b0f06553c827fe1bb7cb2fab7403f9aba68c1233b55240ebd19c7d5bca8a0a2bbb3ba2c3aeda28c3b62de15bd52e19b3e8c5ea23ed2f516bd41758f3b0000000000000000ba0f44b9f70e1fbcb02bce3a9affb33cba7082bc21b380b92e79e43971b466ba22c9f1bb89cf033cf2601fbcad68e3b85f21193b7c4fc0bc7202883ef3c2923e3799bbbc40897e3b00000000000000001e5b023adebeb9ba7cb3403c40a06f3cb52b07bbd2558039ea1309bb967f6c3b2d4376bd12816dbde651833aefc6ddb9e870303cdbf962bda56aad3e990fb13efc656dbd76072b3c00000000000000000efcceb7a863daba57027b3b814e9c3ccf38ebbb8c56abb9824fc6ba10b8503bd5a051bd3a9f12bded4d06bcd0730f3bf5f4d83b0ebf31bdc36fa33eb038ab3e7fa43cbdd1bfde3b000000000000000074767fb9accb07bbbfa98abcece6433dce76d6bc025e5aba791a8cb9b0999f3b3c4d06bdbfde5b3bbe907dbc247dec3a84d82b3b929fc0bccf398e3e96239a3e3fdbcebc8fc28a3b0000000000000000e3f685bb286f9c3b8ae9d43aa985ef3bef39503bfd8b8dbb7e99d4b713b1933c29fe6abd61dc60bd380b683c0d59df3a01eabc3b9b316abd2ed9a93e51beaf3e920279bd5206ea3b000000000000000090e17abaef44a6b90d27443aba85b03c46c307bc666855ba43ffbdbab42e4c3c70e081bdbb5f18bd98e399bba4a94d3bfe87b93bfd433cbd1b12a33ecadeb13e633a5ebd1460013c0000000000000000613b03b958c7c63bb02945bd33a5ba3da94b3ebdb6d72a3a6f7d85ba15c0963ccbd88abd9a1e823c0541c6bce1dd093b697de53ad6f999bcc7968d3e68d2a03eb6f6cabca8ec983b0000000000000000968fffb6165276bb17a9683c4b0ead3cb6c3d7bb092f4a3a84e0b1baa5d9e63b563891bd7c5a85bd2d8bfab9ee3d9f3aaf003d3ccd6176bd442faf3e49a8b93e624c87bd0d78613c0000000000000000607e26ba88be01bbf9c0e23bac08e33c254359bca210093bef62daba5eda393c3c89a6bd80750dbdcd355bbcbe46453b155fab3b664721bd0feaa03e9011b93e2b0465bd93e5233c0000000000000000a34e1a3a82113e3c82ef92bdbbb30b3e94faa1bd36b9333cf24b1dbbc83b113d4c90fcbd50c6533d10cafabc73e65dbba0e0dab804b563bb66fe843e78a0a73e215fb8bca716343b0000000000000000581c9f3ae32db9bbdf51733cfe95b83c4dae17bc18bf5a3b9d4266bae510843a5db688bd5b3575bdb51c14bc72a03f3bf6342f3c9f5c55bd6e04aa3e3f7dba3efbfe7fbde8d6573c00000000000000006ca6f83a38f2fbbb75c1603c83e9e23cbf6cadbc0f22163cfe206cbb9d60343c9e4eb6bd6e26bcbc109cb0bc69537b3b1a35893b15b7e9bc44ea983e2fd6be3e26776ebdc975213c00000000000000007ba59f3a15fa593c9e6985bd79b4143ebcefc8bd0f2ae63ce97cc7bbb7303c3dc64533be5ed9a83daabe2abd33250dbcd42825bb5c61653cffff6e3ead45b93e1a48e8bc655bd838000000000000000017850b3cad447dbccf73b63cb6c6e13c0d0a21bceeb63d3b10de02bcc949a73c4363a4bd3e8d9abd86abdb3bfa99343b3e71bb3c3425a6bd4665b23e78c0bf3e3f96bfbd45fdda3c0000000000000000a7b6f23b59a965bced34a73cc436da3b7340a9bc3ecc773c55b7d5384481b2ba55ce8dbd94a9a63c1f5402bddb1d323c796e7e3c6de94bbd37fe8a3e6157bc3e86458fbd6292ac3c0000000000000000e7d007bce00f613c896f0dbd60fc7a3d708968bd7c861d3d3c4b5cbb517b193da96e50bec0235d3e02e3d7bdcb17043c406110bc2a306a3d89d5f53da0aeda3e0e4081bd4f1d953b00000000000000007996bd3acc13b8bbf036413bfaaeda3a21029dbbb0c8b23ac338f3ba6c2a3e3c2192813c84ee563c84e83d3cd3d102bbfd91633a8a783b3bf2486a3e6fcd5e3ed0fc933be9c4aa38000000000000000023e9633aa12e59bc3985bf3c31cf263ccf3e02bcf561693a9e2c29bb1f91133c2cae663db09c9f3ca5304c3c14e6debaf202613aa571883c9b30503e60cf1d3ee9488b3c11e47a3a0000000000000000de34adb870cebbbb7291143e4435f7bb6bdf2bbc03550c3a5c71cebbce3278bc5e341a3e2479e0bbacb210bc6b591c3b51c73d3b60525e3d0d4af13d8e13323dee8b203d0ea89a3b00000000000000009d70c4393fd71bbbea14a53bb782a13b84ce2fbb8a4dbd391ce0c8ba571feb3bac9f82bc51b186bc72c1f53bcdc3e1ba2c825b3b7e74abbcea6f8e3ed71d8b3e2999a6bc9c615a3b0000000000000000bc58a63914ae13bce2d1f93bf0f3a83b6e130ebc9e7a9039c213ceba42b7993b092bbc3cdb96803c4884a73bc82673ba34c97f3a2f6bcabb3fab783e0e88673ef7f4cfbb2aa1773a000000000000000014c3fc3762a59fbc5d1d543d3d6c923c7e1083bc5c9bcf38ab3256bb9f825fb9e4ca5d3d5cded83c3d0c0eba688fb9bade87073b5363a63c9f81393e70012a3e530a9c3c5739fa3a0000000000000000c114a039933755bbbc4def3b1d69fc3bca587ebb26eec739a27ee0ba39733d3bd5da02bd28bb06bd90c0893b464217bb4b7a933bb79108bd698c9d3e16f39a3e2f6107bdddc49b3b0000000000000000eae6353936f7d7bb5624093c265fd33b8b0ee7bb90c52639bb2e75ba0b34743aca2c51bc602396bc9d65993beb6f8bba419e673b7f61f2bca18e973e8a6d903e6655ecbc44ee353b00000000000000001c6ea03831ab85bcb7cd933c9bbd913b2b016bbc199792370adaaeba88d914bcc6881f3d59d4b43c25913bbbf59deb39f080ea3a1f6beebb652b7c3e9fdd673e765008bc1549833a0000000000000000c2832c3ae4ca4abb9dda3c3cf0ac2d3ca6a144bbd2053d3ae62c3bba17861cbbd9e13dbd10e146bd8724053a3d4df3bab1c7023c41f33ebd94f0a93e547fa73ebd363fbd9b95063c00000000000000007cb2fab7827fe1bb0f06553c6177c13b924bacbba0757939b3ba2c3aa8a0a2bb19c7d5bc55240ebd68c1233b403f9aba41758f3bd2f516bd8c5ea23e52e19b3e62de15bdeda28c3b00000000000000001db380b9bd7082bc9bffb33c312bce3af40e1fbce30f44b93968e3b8f1601fbc8dcf033ce6c8f1bbc8b166ba1579e4392e897e3b2599bbbcf2c2923e7202883e9e4fc0bc7121193b0000000000000000d2558039b52b07bb40a06f3c7cb3403cdebeb9ba1e5b023aefc6ddb9e651833a12816dbd2d4376bd967f6c3bea1309bb76072b3cfc656dbd990fb13ea56aad3edbf962bde870303c00000000000000004a56abb97438ebbb744e9c3c17027b3b7163dabae8fcceb730730f3bef4d06bc369f12bddaa051bdf6b8503bb94fc6ba1dc0de3b91a43cbdb038ab3ec56fa33e1cbf31bd0cf5d83b0000000000000000025e5abace76d6bcece6433dbfa98abcaccb07bb74767fb9247dec3abe907dbcbfde5b3b3c4d06bdb0999f3b791a8cb98fc28a3b3fdbcebc96239a3ecf398e3e929fc0bc84d82b3b0000000000000000fd8b8dbbef39503ba985ef3b8ae9d43a286f9c3be3f685bb0d59df3a380b683c61dc60bd29fe6abd13b1933c7e99d4b75206ea3b920279bd51beaf3e2ed9a93e9b316abd01eabc3b0000000000000000666855ba46c307bcba85b03c0d27443aef44a6b990e17abaa4a94d3b98e399bbbb5f18bd70e081bdb42e4c3c43ffbdba1460013c633a5ebdcadeb13e1b12a33efd433cbdfe87b93b0000000000000000b6d72a3aa94b3ebd33a5ba3db02945bd58c7c63b613b03b9e1dd093b0541c6bc9a1e823ccbd88abd15c0963c6f7d85baa8ec983bb6f6cabc68d2a03ec7968d3ed6f999bc697de53a0000000000000000092f4a3ab6c3d7bb4b0ead3c17a9683c165276bb968fffb6ee3d9f3a2d8bfab97c5a85bd563891bda5d9e63b84e0b1ba0d78613c624c87bd49a8b93e442faf3ecd6176bdaf003d3c0000000000000000a210093b254359bcac08e33cf9c0e23b88be01bb607e26babe46453bcd355bbc80750dbd3c89a6bd5eda393cef62daba93e5233c2b0465bd9011b93e0feaa03e664721bd155fab3b000000000000000036b9333c94faa1bdbbb30b3e82ef92bd82113e3ca34e1a3a73e65dbb10cafabc50c6533d4c90fcbdc83b113df24b1dbba716343b215fb8bc78a0a73e66fe843e04b563bba0e0dab8000000000000000018bf5a3b4dae17bcfe95b83cdf51733ce32db9bb581c9f3a72a03f3bb51c14bc5b3575bd5db688bde510843a9d4266bae8d6573cfbfe7fbd3f7dba3e6e04aa3e9f5c55bdf6342f3c00000000000000000f22163cbf6cadbc83e9e23c75c1603c38f2fbbb6ca6f83a69537b3b109cb0bc6e26bcbc9e4eb6bd9d60343cfe206cbbc975213c26776ebd2fd6be3e44ea983e15b7e9bc1a35893b00000000000000000f2ae63cbcefc8bd79b4143e9e6985bd15fa593c7ba59f3a33250dbcaabe2abd5ed9a83dc64533beb7303c3de97cc7bb655bd8381a48e8bcad45b93effff6e3e5c61653cd42825bb0000000000000000eeb63d3b0d0a21bcb6c6e13ccf73b63cad447dbc17850b3cfa99343b86abdb3b3e8d9abd4363a4bdc949a73c10de02bc45fdda3c3f96bfbd78c0bf3e4665b23e3425a6bd3e71bb3c00000000000000003ecc773c7340a9bcc436da3bed34a73c59a965bca7b6f23bdb1d323c1f5402bd94a9a63c55ce8dbd4481b2ba55b7d5386292ac3c86458fbd6157bc3e37fe8a3e6de94bbd796e7e3c00000000000000007c861d3d708968bd60fc7a3d896f0dbde00f613ce7d007bccb17043c02e3d7bdc0235d3ea96e50be517b193d3c4b5cbb4f1d953b0e4081bda0aeda3e89d5f53d2a306a3d406110bc000000000000000048a6ca3af3dfbbbba9a6443b8241703a7cab89bbc907a43a42acedbaad473b3c9146903c9586273cca0e483ca5b0fbba09ba5e3a7ecbc33a0ccf773e530b533e6afca43bb255b2b50000000000000000f336c13a75f29abc55ceed3c6285163bebca0bbc85f9a73a94ff57bb8c863a3a12a4d93db8f3c73be0042c3c5aa9c138cb3857bac592893cdbab663e5ec0e73dc2588c3c4be4be3a00000000000000000ff6d5b78463d7bc7314f33d7f4833bcd73d81bbe3953239a9a4dcbb06a3ed3b80702a3ee2670ab9ffe1be3bc7e5df39416d703b05e1eb3ce1a10c3e6368883d30fd183c2888663b00000000000000000816eb39755306bb0bd29e3bd5439b3b53bc27bb6c12a739a48cccbaaa46f33bc05085bc518f8fbc4a9cf93b0ef3f5bae0a2683bd473b2bc1e11923ee35d883efe25a5bc97c4523b0000000000000000c24b0b3a0ab616bc89dcf53be102a73a31a4ecbb19f2a63925b436bb8a09ef3b1ce5dc3c7fcff63b5eaef63b71ef31babf4f883a54360cbc1896873ea4d0583e97de0cbc1b90043a00000000000000009e285b39d6bec3bc1c57633dac9ef5bb89c95dbc918cab39cf8fe5bb5c98cb3bd7b7bc3dbf48b63c9f9b3c3c80e7afba2cc9b3395764783c6ee0423e3ed1143e46d8513c4f42983a00000000000000006cd88639d0b41bbb9e08e63bc18ff73b593b81bba28ee33953fe8fbae664c33a5cbe01bd77c10dbdf5a2b73bfeee3ebba7aa8f3b6b080bbd1a46a03e46ea983ee31107bd0ce0a63b0000000000000000e0cb8f398acda0bb3313023c433a923b861acfbb8255723985536eba8e05c6ba5f783bbc4c1cd8bc99db143c0d99b6bad32e8e3bb74903bdee28a13e095f8b3ec2e4fabc5d92123b0000000000000000b2a1463a89f95ebc1a37903c1bb10fbcc4823ebc1d7326b8b86fb2bb2c3208bc84513b3d9e83813b35a5053c8b1e133b1c57883b70c728bc98cf8d3ed6ca5c3e2a457cbc6273deba0000000000000000a750123ad4aa3fbba600473c8ea0253cb66c6dbbe3fb7b3a48c49d39175f94bbf3603abd30b44ebdef085b3bde503fbb59ec003c0f0243bd96f2ac3ea836a53ea8fd3fbd93520e3c0000000000000000c33492b9cd0ed2bb3951873ca114ea3acb2984bbe843243aca11403be12e3fbc804bc0bc1e903dbd36e02f3c9b8f4ebb57e39f3b577924bdb040ac3e63c7973e8b3d23bd6c63a23b0000000000000000b230a639e45c19bcc338de3c3dc844bc95110abc8a42b0b901ea0bbbb82bd4bc3d02fc3bde5cedbc783eb13c035eef3a007f363c628fb0bcb4bba93e47ad803e979925bd0e8761bb00000000000000009d4d303a41366abbe93b8e3cdae12d3c06e30abb7f063d3a44878f399d1e38bb37b867bd2b4f81bd0849d83b10cc47bb3038463c22a275bdb89bb53e5c89aa3e924463bdb18b2d3c000000000000000011cb85b9f51148bc8ea6ee3c84ff42bb6da425baabf54b3ab7d6d23b1e928cbcca32d8bc5cc98bbd7a6c6f3c0afb94bb88dbfb3b52b856bd6025b63e00ae9c3ee49a2abde676c73b0000000000000000231cbeba8b2503bd1a01823dccc003bd4da54e3b11372c3a641b173cc667fabc8448783cf23190bd3c06d63c05e26dbbb97fc43b6a9b11bd7d71b13e8eff853ecf5ac5bc24be0fbb0000000000000000a65f94b8b53092bb8497a43c118d073ce13bd7ba1c76abb936c4f13a978f1cbbb7606cbd2bcf8bbdd8ad4b3cd0af31bb9981623c00be86bd2ad9ba3eff00a93e0c296cbd5b3b1c3c0000000000000000fa661e3b407699bcbff51c3d97c260bb5f1ae9ba98c97a3a4ee9e13b6886bdbc8f9bb0bc57afb7bdedf4c33c1637a8bb8c982b3cd3c971bde743c13e0f85973e576417bd7980483b00000000000000006fc0113c902d84bdff44d03dab813abd8eb1913b9d25c53a2297a33bfb750dbd8883253d0f23e1bdd05b0e3d189c9cbbcf92f3ba54e1b3bc1ab4b43e23fa763ea9a692bb5c6952bb00000000000000001fb9553baa4331bc0ef2e43c14f5533c0f73c1bbaa6eeb3af95f383bd1a420bcaaf07cbdf6fa9bbdb574373c11ab88bb2b0b8f3cb43c94bd2a65c43e4fcba63e183167bd73d42e3c00000000000000004c4e233c4659f6bc8bfd343db1ba953b9a36b0bb6076ea3a4627ac3b9ec1fcbca499efbb49deeabd0d1ce93c33ca9ebbeff3463cbfea81bd9eb2ce3e784e8a3ebe3bb1bce14002bb00000000000000004457d03c09ebc6bdfa1bf03dcd3e0cbd91bc00b9245a163b4cc434bca755e5bcd609ad3de6e217beb6060b3da00d66bb7367ddbb929a6fba363db53e5b194e3ebe426e3c9ca14fbb0000000000000000a8da8f3b608c46bcda45e13c71ba4e3cb360cfbbaf206d3ada23ed3b4e869bbc36df5abd1f3294bd0131203ce37258bb49617c3c28e491bd587aca3e948b9a3ebe7f39bdddac013c000000000000000096e28c3cca0c15bd45081a3d3e4b733cc4c735bc034b823bdec3fc3b9f2a17bd614e383c13adffbddd09fd3c1f7401bc8e24143c92a88dbd8cd9dc3e6e006d3eee47c4bb873546bb000000000000000049b2243d9b68dfbd3e37df3d4f4316bc7574a3bb0efc523b525bc6bc31b9b4bcb6f3e13d26063cbe4138f03c7c0b15bb07f8c4bbac837dbbbc7ec33e24a8283e1503023d9091a5bb000000000000000061c8743bb8a30ebcd6010a3dc7d0a73c316e88bcab6a0e3c64a7283c21c20abc6f6691bd36aca4bd81069a3c0dd1b8bb3928d83c4e3fd4bd56fdce3e7d89a13e502182bdf38f843c00000000000000003952b73c5c3022bda12d093ce7990c3d9b61bfbc8bea323c1380b73cd5ba03bd4698243d0f2bebbd76b5a13cf4ad30bcb42f1a3cc422acbd9d7eee3e2b08323eeb0437bc121b0c3c00000000000000002075633d0872cbbd91bd263db681173d84dea9bce356b53bdd59f2bcc32caebc77c55a3eb38a5abe542ae43c27f72bbb91725dbb58d79abca337dc3e30a66e3dac824b3d24b214bc0000000000000000e6e6df3af10badbbca16073b4d2d613af08360bbbd54a53a414022bbdfc64b3c310b8a3c6058063cc72e433c085f05bb18e52e3a647784395168833ee502483e5fb7a83b30e9fdb8000000000000000046a5ed3a01a489bc7ac00b3c4901a3bb2dbbabbb0b70cf3a55d52bbb12ad5dbaf627063e5d81d23bbe7a833cc0a16fbaaaf4cfba46dbf13be3d5863e288ea83d41d2643cb08e163a0000000000000000eb39c7380255e5bb1533963c51824abc3e4e82bb947d78397df528bb7c3669bbfaa0693e64cf583bdcecc63c3920a939592811bb8a92223b250f5a3e7bc2253d067c183b9d9ca6ba0000000000000000fcea023ab4c6e9bab93f933b3695993b5e662bbb2886ba39ba15c9ba244e003c05858ebc28bb97bc039ffd3b0ec8fdbae8b7733b06f3bcbc3cf4953e4bce853ef1eca4bc7192613b0000000000000000f6625f3a47ed0fbc10e48b3ba74dbcba63bdbcbb5605d3395ca68ebb43ef3a3c2accdf3c3060c5ba2a9b363c147b73ba33b6bc3ae54752bcf331953ed70e4c3e123d44bcc4e7953800000000000000006250253adc6966bc41f9853ca48758bc45622bbc8bf0303ad5d41dbcd05b973cc0e3093e39180a3c00caa93ce68955ba99a50fbb3df6683b23705e3eebd2063e6de73abbb1f95b3a00000000000000002ade43395c71a3bad8ddbc3b7e4c023cf0a48ebb6ba20b3a333706bad983083abd1a01bd0cca12bd4301e73ba03b77bb6383873b58570ebd41fba23efc0d973e09b308bdb270c03b00000000000000003897ce39765834bb40f0af3bf49fa13b31aec7bb982dd339b9cd70babe4a0fbbbfcc5fbc66d80cbd9e12553cecb111bb798f963be2eb0fbdbdd7aa3e83b7873e7e6607bd0762423b000000000000000066ccb23a8c0c20bc86251d3ca1eb42bca34e1dbce7e0d6b7860515bc81fbdeba00684e3de5112cbc8b1a8e3c2ee34d3bb87dc13b036685bcab7d9d3ea4554c3eff30b7bc10116fbb00000000000000008e7aea39e71622bbb17f463c63c0233c680089bbce4c903abc99b63a178acabb4c393abd4e3c56bd83b6bc3b564777bbd958f33b5f3c47bd9a26b03ec047a33e2d6243bdcb291c3c00000000000000003167edb9ef1f90bb32bb773cb891533be8449ebb47e4853a4136b53b701c87bc1642c7bce63d64bd6aa08d3c76ac95bb8c969d3b904e36bdfa42b63e5266943efdae32bddbe3c73b000000000000000052a686394a17743733e5bd3c83dc1abcfd4059bce4424fb9c8caa0ba231320bd586e26bb99892abd0e60213da7a47b3b0c9a783c90bf90bcda2cbf3eda876f3e914065bd2f5505bc00000000000000000ac9ef39235f6ebbabfe943c9d1d2d3c29204fbbc50c793a73a9b43aeda1babb5a4064bda37f84bd37b90d3c0ac067bb74bd573c38e27dbda080b93e5bcca73e5dd561bd75a8263c0000000000000000e9dd273920b954bc34e1f13c831784b9664150bb4c8ed63a9ac72f3c37e1d0bce632b5bc9a4ba0bde3eaae3c7a14c6bb36b9eb3bd0d869bddf4dc13e5d3b953e0fe121bd8e17af3b0000000000000000e579c8b79379a7bc5e6b293d026f69bc67c480bbcd38473add99873c1a6638bd57d8243c097f9abde75c093d87ffe6bab09f753bc4f51ebdde38c73ed098753ea16cf5bc94cfaebb000000000000000037c7e93abb13f0bbc5f4cd3c442f243c2e8298bb0e15a43a35f10f3b05d11ebc18246ebdd32496bd87d9693cd14996bbfd4a8b3c57748dbdda24c23ee38ba53ec8456bbdea59243c0000000000000000e684c73b8a1dc9bcdc712f3d41a3803ab492dcbbf790173b7183253cf14c1dbda40b1fbc7302d0bd937eea3ce2069ebbddd81c3ceed36ebd5fe8ce3edf36893ee801e2bc565579ba0000000000000000093b453c9e5c49bd74fd5b3d229f09bcbf4a87bb0870843aef39353c13c04cbddb775e3dcf9fdcbd6bd6cb3c708087ba46aee5bb6920f1bc9788c73e6e2f583e9893293bbad768bb0000000000000000bf8f4d3b79ff1cbc2eb4ea3c2a18493c343ccdbb2f5e113bbcfba73b4c3d88bc53f974bd013e9fbd1863703c29f8b9bbeab99b3c18209cbd59dfcc3e4c009f3e711a59bda34e163c00000000000000002397743c84ac1fbd65274e3d0457123c8cf63ebc277f743b11d0063cc81b43bd8fa2fe3b7edaf4bdf474e33c2a9439bb1fc0ce3b1bd763bd56dedf3e0494633e4926abbb3ec3c3bb00000000000000004767c83ca64395bd96d7503d6cfb033c08e5f6bb6867113a5163a8bb18f756bde8a8e53d1bfe01be608b6c3c86c3fd3af25b1ebc2c5cc4ba0f9ec73e30551f3e6e4aa13c8d65d0ba000000000000000098ad673b90662bbce22be83ca3c6383c947cf4bb1e2d193b7ca5423c67afe2bc548750bdde5a94bd6a2e733cb5a2cdbbbbb3773c52559abd773ed63e17be8e3eb76126bd8218d93b000000000000000005a6ae3c052342bd7c593d3daaba8b3ca11389bcf302d53b2435253c0bc250bd1324c33c815cf4bd6cc0bc3c58187bbb6c6aa2ba75685fbd3ab6f13e122e2a3ea3374b3c5b649abb00000000000000003b56113d940fb0bd54ea333dd9fdc03cf0b424bc277ec939bd509fbc6b1d3ebd7211153eb97910bec665d93b1711833b1662f6bb05ccf23b7b76c93eb31dfa3d10ece93c992328ba0000000000000000ad87c63b45f4c2bb40b00e3d3b617c3c7e5859bcc513493cc046413c7c2471bc2633a1bd2f218fbd96455e3cad322ebcf547d03c0ec3e0bdca0fde3e043b913effdd51bd7fb68e3c000000000000000038e7be3c820150bde428e23c42acc23c11f8b7bc8277173cadf0c33c4bbc1ebdc10ac23cdd4dbbbd56083b3cd6a1b4ba9de6ec3a59af88bdcc18093f85f0a33de8e3843c204ca3bb0000000000000000f389343da148bfbdaa86503cc569233d05355fbcef30ee3a0928cbbcf8d209bdd5d4503e0bf4e6bd6e3624bba3db6b3b41a2bbbb13b3f43bfdbcd23e3104033d7b83e93c5b44623a00000000000000003a2c063baf1c88bb62f9063ab3740c396df528bb54a99d3afa5e48bbf00f663c0f5b653c6f0be83b778d473c8dc10ebbc678923a1959cdba90a98a3e4ae53e3e6a12a13b70fd77ba000000000000000033ff873a7088e43ac11c8cbbd444c2bbc3935ebbfe80d83a1d52e4baefd4313b5b289c3d484db53bb2dfa73ca5d529bb6c6cbcba07f97dbb787da43e915dac3d1fc02b3c55e608bb0000000000000000f51c043a80761dbb7eb0213be5f83fbc74d2abba08d02d3ae5dc95bbf913ce3c0d15ff3d9cfda0bb1b47c93cc671f9baff9abc3a5841b5bc6d5bab3e02a0273d9d537fbb4d9a0abb0000000000000000e15a2a3a88c2cabaa5ed813ba5009a3bd08524bb3971d439d41ad5ba95a4103c098b9cbcf16d9fbc9de5023c0a5015bb712c793bcc54c5bc1967993e7eb3833e2c7da5bc2a7a6e3b00000000000000007283a03a7889f8bbf5a30a3b4af805bb305c92bbcff2e839e9e3b7bbb3778c3c87ce713c52ea0ebcb5d25f3c9369aebae013133b9e5f9fbc9d99a33e8cd2443e36d562bc3c8590b90000000000000000f634963a9d9278bb12c5283c9d7595bc7628f5bb13985b3a6ab443bc46cbed3c700a8f3d7dd19ab915ddf73c47b4b1ba26a292ba768740bc82dc923ebc71103efc513abc280800bb00000000000000009dfe5339bbfdb2b9e9ee9b3bc76d063c92fb9abb84a1333a91121ab998f320398e9f05bda5ce14bd97e8043c1a7490bb8430763bea0910bd1d86a53ee96c953e9c030bbde7bcda3b00000000000000009c5b84395bab62bacd6e013bd80ff43b9e20c8bb163e3c3a4e919eb97cc071b9d6789dbc973622bd0d12773c39036ebb43c2833beda31fbd5efbb23e0115853ed01d0ebdd701983b00000000000000002e7fa63aa9e10cbc8855133b36a00abc4190d9bbff8db83967ad2dbccd7c823cc338013d7362a7bc068ca23cb9d5353a4f826f3b72f9e1bce302ad3e35a6453e84bbbdbcb8ae81ba00000000000000008ff983396ed6c6bae256363c3a232c3c931da0bbffd0b23aaea6023b2bd9e1bbebea3bbd9cb159bd041bf23bde8c93bb37e4f13b9fbc4abd9171b23effdea13e550447bd3d63273c0000000000000000b1cc7aba53d366ba29ed1b3c8bec0a3cfe31dabb94aac93a5455f33b23b989bcab57ecbc406f77bd2e05a53c0503bdbbcbc6633bc6fa47bd76d2bd3ee551923e60523ebdab860b3c0000000000000000278335bbdf41003aa112223cda32a739c3fc34bc00c4913a7825d73b303cacbc2f0a0abc964a52bda35a0d3daecd92baf260653ba41616bd47b0c73ebcf16e3eb2284abdfe79013b00000000000000001b08c0399ce93bbb7f68913caa502d3cce686fbbc4b3993a79eddf3aeb6fe6bb360e68bd040584bdeec5203c88aa82bb2a17633ca56481bdfb71bc3eaed6a53e849c63bda911273c0000000000000000e4d16cba5dfcbcbbfd6e9f3c097cf83b9e46d2bb21b0123bb835503c650ce6bc65fbe4bc2bb29ebd2b07ba3cb2afc2bbd79fea3bba4b7fbdc193cb3ea3388f3e750022bd6b5fab3b0000000000000000de85a5bb01af17bbf9148b3cd5a365393af8e2bb813fb23a9b04bc3c96b22bbd245cfbbbde0791bdf310093d11eb14bbef7fc43903dc5bbdb185d83e5842693edbe807bde09210bb0000000000000000cb21113b4a97d1bbafd2cc3c8c5f363c76c3bebbb84de03a3af61d3bc69561bc259a71bdf0a097bd059d843c7b43b2bb9098993c20d38fbdec3ec73ebbeba13e71d16cbd1b9f1e3c00000000000000004ecb8d3bffbf56bc7fe2e63c35d3213c15fa1bbc9454063b1e0f663ca0414bbd9d6938bc1b3cc1bdbd3cd23cb7200bbb310f213cf9d97fbd868edc3e2d037a3e9ae3babc0ab06ebb000000000000000041efe63aee881ebc2cd5503caf66ee3bec63dcbbfeef723a9a81d53c55f68bbd25caf03c1d4dadbd12adba3c183bcb39b37600bc680446bd36b0e43e9ff53c3ea30a4dbbbc807cbb00000000000000008c700e3bfa6dd1bb3b36e03c0ca4493c3c47e8bb174b223b125eef3bb3e4b7bc758776bdd12e9cbd8545903c811cddbbba399f3c09339ebdd5ded33e4d57983e2c2456bd543e0d3c000000000000000021192a3cc247a9bc0c90fd3c096b7b3c5ef344bc5c680f3becd9883c58d88cbd6664b93b9700c6bd1bcd953cfbf43d3a2811083b9fe861bd2e34f23e9c793a3e0f300b3bb9c1cebb0000000000000000c04d343c811089bca7cf06bb981b893c3eddd2bb9a40ce383c83923c12fdb7bdca67a33d5376a8bd67a5de3b54df1b3b3a7168bc88b5c9bc40b3eb3e1c5dfd3d8ffa8c3c970f31390000000000000000bc4eb13a3e87b2bb005ad13c240e493c9de914bc317c573b6adc7d3cd54610bd197054bd7b428ebd5edf903c3ddf04bcb10e6c3cf8d39bbd7066df3e0f99853e10fe1bbd8a5ec63b000000000000000077ee853c7b91d9bc9270db3c418d9a3c540964bcf491393bcf6e8b3cdfd7a4bda773bf3c8a8bacbd3baf183c96db953afed5cfbbf5a634bd7e1a023fe9dbef3d4b3b923c7e4e52bb00000000000000001e3aac3c98c3dbbc89a606bcdbd6b13c4b10bfbbe16f01ba58cda73bb78fbdbdc14bdf3d0b15a4bd567938bb45216f3be16d53bcc0e74abcce12ef3e29afae3d57cde33c2d52ce3a0000000000000000ba15bd3b3e9eacb765faf83ccc11683cddce2dbc1ed2433c5504383c30599dbc34f9aabdd1fd70bdeae9133c5b3054bcc9a1cf3cfa2ce3bd1a54ea3e6080833edba62fbdb853873c000000000000000029d98c3ca538dfbc3857a73ce3ef853c616388bc2e44b53bcfb6c33cf111aebd232bb63ce8c74fbd0eb8edba61850d3bfe5b8dbb6cd40fbdccc20f3f9d95073d0610ab3c134e22bb000000000000000047e9dd3ce89b27bd138443bc558c823c0dbc05bb362be2b8347dfeba06adadbde511fc3de29101bdfc1427bcb140783a513b46bcc347893bfbad023f951240bcfbeaa43c6724b63b00000000000000001c4f173b9efa96bb74f4af39ebb4a1baa16d21bbd7dfae3a4a6368bb342c813c1178f53be3c9d13b21214d3c297509bb010af2397d5a5eba3314903e2d663a3e67a4b13b37a832ba00000000000000005147e53aab68353b87d4b5bbec4d9fbb9ec04abbbf33de3aef1599bb40a9943cb97f063da1c5b43bb0eca13c279213bb7a49493a30f715bc228db53e4940b23dbe26173ce92194bb000000000000000040671e3a3edc0d3cc4179bbb0bce79bc1333fbba8ced4c3a75c6b6ba4569cf3cd6ab183d578ce23b5328ee3c2912a8ba864682bbaefcf6bcee81d03e7f522e3d8d84c83b9a78bfbb00000000000000003f0a373a6f87c3baa61e733b4ae49b3b7e2029bba1b1e63974d0d1ba52cb223cf135b1bc363da5bce8f2033c933a1bbb5649763bc7f9cbbce8899c3e56df813e22d7a4bc24e3863b00000000000000006a02ea3a3c0cfebba2cea23a77a826bab97567bb72ca093af35ce2bb106bcb3c6f8c60bb826a49bc53225f3c7b0103bb62333c3bc4e5c7bc00c5af3e6c3e3f3e5efb61bca05b4cb90000000000000000fcb5013b5ac99cbbb9952d3b35be70bc2795debba80f5f3a845f32bc72d3253d56e8483cba976cbb67530f3d9b88a4bae98f4fbbad9a99bc8416b53ed610093e4c8f32bce1f1c1bb000000000000000013e81e3947647d39ae286c3b7a54103ceb2ea3bbe1513d3ad9d0b139fee29639efca08bd3cee16bd88a8103c25b49dbbf4e5523be5ef10bda25ca73eb40a943e59380dbdbc7ffb3b0000000000000000c4413c3785fd853a072a91ba2cd02d3c8833d8bbf91a903a24fdfb392bb91f3bd579e0bcf93629bd5c7c823cdf23acbbe3470f3bb95c27bdcb31b93e5adc823efccc12bd394fef3b0000000000000000f296d53a131238bc0fd4d6ba235264bb71b6adbb1c56403abedb4bbc598b123d2d2b243b425bbcbc3384ab3c02dbc2ba2d97983a4ce907bd72dabb3ec3603d3ecc99c2bc07ca733a00000000000000005b6ebc39775befb967c21b3c98a43b3c40d4aebb5e0cce3afa63de3a1d9bd8bb98fd42bd9f5c57bd138a043c5ff3acbb0a11eb3b1d904cbd923fb43e4acba03e28204abd858f373c0000000000000000daebd3ba3d7e553bd326533b469f613c382508bca5280c3bbd1af53b54ff5bbc333717bd024675bd4d74a53c9f82e1bba2df0d3b4b5a51bd9736c23e3d78913e211b47bdc392353c0000000000000000364a71bb5defd83a5d0626bbd9011c3cded114bcfaa2083b0002923bb2adb73aee45b0bcd61455bda013d83c8fd5a2bbea061eba3c1a4dbd04e1c93ea404753ee61231bda8b30d3c0000000000000000e5ae8e393d33ddba3fa1893cc4f83a3cc97e98bb727fc33aeae3af3aef05e2bbc4df73bd07bb81bd5860363c0f9f93bb93746c3ce3c982bd8849bf3e03eea33e043568bd5a4f2c3c000000000000000017ff4dbb6cf34b3be4f5203c480f5f3cd41514bce7f1453b0c534c3c3661c7bc5d3c2ebdbe3c8cbd5c12b13c472ccbbba0b9ea3bcc0486bd52efd23e407f8b3e732830bdaed0e23b0000000000000000ae9708bce7891e3c81b8b7b99e8a4c3cdf9d1dbcd6a5113b3c6c983c4db8c5bc30f6ffbcf84179bd64f3d53c794b2cbb4284413be0b689bd7906df3e23076b3ec4e70bbdb50bb73a0000000000000000f983143b6f3e94bb8323c23c6215453c9af1e9bbd64c213be15e813afd8261bc25f380bd176b93bd0ce8963c14f4debb03e4a83c67ed91bd3c07cb3e3e779f3eba0d76bd3345243c000000000000000021c302bb64fd943b94674a3c0295683c31c928bcd2f81b3b8f3e893c634a42bd00de02bd999d98bdc0f0b53cbe780bbb81063e3cb1e08fbd8999e73e2a9c6c3ef934d8bcd4f121bb000000000000000079eefbbb6db87d3c1e13b4bbc9a65b3c1c3ef8bb32e5943ac679d73ca7885abd629895bcc99666bd3c50813ce149b03a8cfba13acb7292bdc9a2f43ed917393e57e905bc60c2a0bb0000000000000000533f5c3a3c07e5ba1a0bcb3c75d1533cfe1e01bc3d57433b8410d93b524bc0bc03f386bd395092bd60f2963c1dabf4bb649ead3cca40a1bd368bd93e04ad933e533459bd0c6b0c3c0000000000000000a5e796b804dba13bc7644f3ce1cb753c47881abcba01cc3ac294c53cd1938ebda656dbbce9b082bd2a6b423cdfb2173a2a5fa13b3cde8cbdfa5f003f35fb2c3e80d63fbbc53d97bb0000000000000000016c90bb02c5873ce3213bbcb0905e3c5593a8bba3d6a739acdcf33ccf0d9fbd261b303aaa7233bdcd526d3b0fd4113bb10d04bc136871bd28a5023fc916fd3ddbcb2b3ccf0ce1ba000000000000000089b3b4b8d9661a3b87d5a53c0152553ccf7d1fbc14a65b3bb630613cacba1ebd8c096fbdb52b7abd65778e3c3fb202bc11b6843cd0529bbd1801e63ee82d7f3e0d9c1fbdf3a4c63b0000000000000000deab9f3bbae2ae3b795b043cca155d3c18b516bcb38dbc3abe6fdb3ca223b7bd912c66bcf42441bd525b953b3fd37a3a060368bb775167bd4f48093f3027e13da84b273c451109bb0000000000000000dcc93b3b5108153cb9ae15bc407e3d3ca50452bb0cc223b975d3d53c562db7bddb49603c81fe16bd3ee61bbbb7d7043b7ebe5abc70393abdeaa9083f998ea13de2b8aa3c6a058e3a0000000000000000ced3603b083d103c553ba93cd4d1a33c8e323ebcaaa61f3c2ad5383c1c4aa7bcfb51b2bdd0e955bde2d1853b4de04fbc5bffba3c220fe0bda239f13ec82f783ea0241cbd9ae48c3c00000000000000009acef53bcaec243c17a3703bb5ad413c0e7e31bcd9ed023b72ddd23cac36c8bd4ce1dcbb500dd6bc01a257bba7c21e3bf5061ab9ad3f33bd1b1c103fedf84b3d72515e3c07f85fba00000000000000000a4c3e3c95e203bb1dda78bbce4e833b1c9a46b97f4b78b91920883c3514c8bdc921b83c39dd56bc487868bb8e705939a6685abc757b91bcd56c113f120c223c517b823c6b493c3b000000000000000063172a3b0eb195bbdebd833992414fba5df822bbba99ac3a086a86bb0f168e3ceedb693b6b9bbd3b6f2f4c3ca5031cbb33d55b39e429013af3d3923eb81e363e534dcd3b37911aba0000000000000000fa53843b264384bb61c996bb972725bbcb1629bb3d47cd3a68f4debb59f7ff3ca0a2203c4672ac3b53be8c3c76a037bb887377393971c9bb44a1bb3ecf09b73d5f160b3cd0a888bb00000000000000007f4e233bf6ae03bb7a5764ba12e6a3bb34b86bba5998eb39c2317fbb23641a3d2a0d583b9f3e45bb7466693c79b2d2b9d4856a3a12ab9dbbdac5df3e9038d33c579f8e3b36d0afbb0000000000000000c8555d3a9072c6ba8461703b0c14953b622823bbc02bf7394f47cebad853333cca9fc2bc791ea6bc44e0043c1fb51fbb4b3b7a3bc0efccbcf35c9e3e83a8803e1146a5bc0a288b3b0000000000000000cfda283bfbfc0abc3877c53a131ba33970f932bbda80163a7daa0abc44e3003d78099dbc677f4dbcc66f4e3c975d21bb6ab32b3b18afd1bcea8db83e7039383e16b653bcf1e9b7390000000000000000bd316c3b235f2fbca6d30dbb96a5dbbbe43813bbd2d1dc39438941bcad26683d30540cbc219c79bb35b8af3c30b2adba03080dbb46db91bc43e5cd3eaea7bd3de8ee84bb4808b6bb00000000000000002d54af3875f06e3a8fdf3e3be832133c7f83aabb4657553ac0ea583a48acc83940890dbdac3214bdee74163c0442a8bbb920403b22a311bd257da83ed613933e404510bd77f50a3c0000000000000000dbd659b78211ff3aa3ea20bb50bd433cfac5e5bb7975bd3aabbfbd3a69d0c23b74b715bd99b01ebde235823c4b13d9bbb04f2cba76a029bd6d03be3e05c47f3e560115bd0142293c0000000000000000ab0c353b221653bcf1ebb1b9e5d085b9316e6cbb207d5b3abd2e5bbcb6f53c3d9976d0bca613a1bc360f943ce02b29bbc8b2803acdc60dbdaff9cc3e0df3263e78b1a3bcede8183a00000000000000002fdf2b3995fbe73953d7043ca25d473cd605c8bbcdb8f43a23a9ca3a4cb3c6bbd55f48bddb0454bd7b44163cd2b1c2bb40b6ee3b03a84abd751db53e30f49f3e7d9d4ebd6979413c0000000000000000d332fcbac96bbe3b6f62c1b95209843c144f19bc8d37333b4d16e93beae817bc28063cbd920963bd6097a53c70ea09bc05aad1380a514fbd479fc43e628f903e0ab451bd43be653c0000000000000000570430bb28755c3ad70680bbb527483cbe5b14bcd3ea323b2e16fc3907f97c3c29fa27bdf37c31bd8caaba3c1d9adbbbb594a4ba2bca4abd0e8ccf3e9d146a3e91a228bd24ab263c000000000000000078e3c539c14984ba771f833c0f8e413c5746b8bb8e24013bcd238c39193db8bb18d17fbd154d7dbde45c503ca1a9aabb5f1c7f3c1f8883bd87cac03ed93fa33e466971bdd112313c0000000000000000c17a78bb7287f03b1323d03b9e196e3ce53422bce22f7f3b506c273c4d6598bc6bc367bd67b26cbdc0dda93c66d103bc6335ce3bddae82bd48d2d63ea7c7883ee24d44bd1aba293c00000000000000006e0dacbb7b1af13bb58f783abccf483c680426bcc665593b59c5de3ba12c04ba0e6e75bd3f8535bd1db0ae3c208799bb9dddc93bcfe58ebd524ee23e84df673ed0f717bd8071a63b0000000000000000758fa33bf5fcffbb9e77d13c152b5f3c42383fbcc428a53b0df2c5bbcb6e6ebb53c892bdbad395bda25ae33c0f5e3fbca292cb3c900b99bde51acd3e677ba03e4b158bbd51f64b3c00000000000000001692d3bb0adc433c0de1373c2743123cfe4722bc4daa7d3bcff26e3c35800dbd6ad665bd046870bd0f97e53c7a9bcabb16856f3c48de92bdec87eb3ed2d26b3e54fd24bdd0adc03900000000000000008106c9bbccae343cf2d0783b4f46fb3bd0aae0bb6172003b5ad32a3cda435fbc77a188bd7c610abde498653cd0690bbad838503c4ff8adbdfd66f93eec433e3e1cc594bc28d376bb00000000000000005ae3803b30e272bbfee3d33cc7586a3c596144bcdf3caf3b5dede6ba4fdd67bc37e79bbdc3e98ebdecd6d23c36c83fbc85d8d53c585ba8bdf539dc3e688d943e6be07cbde3053e3c0000000000000000bd40ebbb4bf2833c18054e3cba11f73b376c08bc1c71583b1762b73ce67b66bdea3578bd38a72cbd5c25863cb35077bb03654d3cc95f9dbd5681033f17ca303e30b5a0bce0301dbb000000000000000009b2f4bb02d9743c342e233bef7fcb3b036cacbb4a19a83a0dbe933c2c5c0cbdfdbf7ebdf189c5bc9610003cbffd873a1405f53b9a9ea6bd1fcc053fee97113e3f50a1bb9b9994bb0000000000000000c3871fbad810063cf1a3933cafc7423c94b613bc51bd123b19a41c3cd05e21bd450589bd451e5abdc68b8b3c5e85f0bb36379c3c080799bd6942e93e94c57b3e5a4432bd6473ef3b0000000000000000d02884bb414fa73cd821e83bb9eac53b9fe1e3bbd7fc203be7f0e13ca404a2bd649058bd7ecfccbc67efed3b773c08bb36f39f3ba0a78abd86ab0c3f4f4af53d88f8b5bb10bfdcba0000000000000000ee8fbbbbc0fc813c74ffe73a43087b3b7ada5fbb2911873a1f7ab53c66e058bd3b6f55bdf4258abc67778b3b359a413af5b13e3a1e148fbda72b0c3f89f3d03d4e76823b72a644bb00000000000000007ef2443ac1b0513c8fdf793cb510b73cb00734bc4957023cae835d3c49f190bc0918b9bde1d54fbd1cbe63ba98e12fbc30ff973ce2ffd0bde725f13e55d6783e857527bd23fc9c3c0000000000000000656ce8b90886ac3c09b2be3bb51cf73b9da6cbbb98dbc43afae0ca3c73e098bd17193fbd981ca9bc3c25fd39abea86ba2105c03b25f279bdaf950f3f31efa83d5f04653a944721ba000000000000000039db8f38a31f263c9726253bbe3cf63a033405bba534673a5e947c3c21a785bd0078c7bc0dab3abc0e37323b04256ab88790b1ba061d20bdae4f0f3f83d73a3d5e28da3b21490ebb0000000000000000f691283b025689bbe61c853912e7d4b9c4e818bbe115ab3a44b598bb8a598e3cff10393a297ccb3b8683463c2c6d1fbb9e16a039b205773bc3a5923ea61e363e0808bc3b69c71dba0000000000000000351d843b15a1ddbbb8469039cda687bb9bb336bb0926cc3a0c9782bbd6ffff3c1d7ec3bb3d020a3cc6d98b3c458827bbf09994bb7874243c4f63bb3eba15b73dcd16ab3b5a6025bb0000000000000000361e3c3bc4df9fbbd41ce33abaded0bb232333b947d7a83976fe92bbfa812f3d37bfabbb9abc8c3b13466f3c9d70f8b98745a6ba97290a3bc3b9df3efeeed43c0c0454bb07ceb7bb00000000000000005d6a5c3a721dceba14427a3bd8338b3bf7a61fbbbce5f6394e4cc6babf56333c59eeccbcd646a5bc69d3043c391923bb9f69703b8c9ec2bcc45c9e3e6ca8803e1e1fa6bc6020953b000000000000000063dc283bf9ad0abcabcb2b3b2601b739ed5e21bbe168163ac2000bbcffe1003d55b2d1bc54c253bc06854e3c74fa32bb65a6c53aa50d9dbce18db83ec83b383ee88c4dbc4426a239000000000000000053a27c3b338848bc5081fcbaeb67bbbb6ec5a5bad523d1390bdc38bce0726d3d21b396bcbdff7cbb6f2eaf3c5fe60cbb666e07bb09b416bcd63ace3eabbbbc3d19f36fbbc189debb000000000000000013c6ae3829fc583ad31c403bdef50a3c443ea8bbc344553a8a006f3a998dc83922a211bddd4410bd7f71163cdc7faabbcddb3e3b31880dbd187da83e9613933e3b3214bd6833133c0000000000000000a9ed59b727bebd3a1e4e2cba9641293cf511d9bbcd72bd3acd0fff3a69d1c23b58a029bd4a0115bd9035823c97c4e5bbfbe920bb52b715bd6503be3e00c47f3e83b01ebddfbc433c00000000000000004652393bb47a5dbc07ec8e3ac010083ab87b27bbce86593a97a755bc0c1f3e3d4c890ebdedd0a2bcb38c933c85e969bb8ffb74b9d804d2bc5113cd3e53c7263ed536a0bcdc4ea6b90000000000000000e6dd2b3916aaca3aefb5ee3b5f79413c95b0c2bb86b4f43a6bffe739c1b3c6bbf5a74abd7b9d4ebdc543163cb204c8bb2ad7043cc85f48bd731db53e32f49f3ed90454bda15d473c00000000000000001833fcba6a16e93bb9a1d1383bbe653c78ea09bcde37333be76bbe3b0de917bc04514fbdfcb351bd4197a53c014f19bc6364c1b921063cbd479fc43e618f903e830963bd4609843c0000000000000000988e2ebbd352e539d57b9ebaa3fc253c35cfdabb3a1b323b6f82503a6b0f7e3c92024bbdc07128bdde50ba3c14c613bc3e367dbbd83328bd4093cf3ed8066a3e184c31bd8482473c000000000000000027d6c539fd418c39511b7f3c3013313c7daaaabbd025013b004284ba2b41b8bbf98783bdbb6871bdab5c503c3c47b8bbe11e833cc2d07fbdb2cac03e8d3fa33e874c7dbd7e8e413c0000000000000000cb7a78bb536c273c5f35ce3b17ba293c5fd103bcdb2f7f3b7987f03b4f6598bcddae82bde04d44bdb6dda93cdb3422bc0d23d03b6ac367bd48d2d63ea7c7883e65b26cbd9c196e3c0000000000000000b893abbb96c8dd3bd40acb3b0aa5a53b1b2e99bb0bea583b0c35f03b91eef4b903f88ebdffd717bd6c82ae3cf9ac25bc308a803a9a9175bd7952e23e82d7673ee86635bdcb48483c0000000000000000748fa33b10f2c5bba592cb3c3cf64b3ce05d3fbcab28a53beffcffbb9e6e6ebb930b99bd44158bbd715ae33c43383fbc9677d13c54c892bde61acd3e667ba03eb6d395bd342b5f3c00000000000000001692d3bbcff26e3c16856f3cd0adc0397a9bcabb4daa7d3b0adc433c35800dbd48de92bd54fd24bd0f97e53cfe4722bc0de1373c6ad665bdec87eb3ed2d26b3e046870bd2743123c0000000000000000d748c8bb54372a3c7da8503cfa6e77bbe2fa0aba9645003bd7f1333c3a535ebcbc0baebdf8a094bcfb77653cec52e0bbd87e7b3b57b788bd646bf93ee13c3e3e6b4a0abdfb76fa3b00000000000000005ae3803b5dede6ba85d8d53ce3053e3c36c83fbcdf3caf3b30e272bb4fdd67bc585ba8bd6be07cbdecd6d23c596144bcfee3d33c37e79bbdf539dc3e688d943ec3e98ebdc7586a3c0000000000000000bd40ebbb1762b73c03654d3ce0301dbbb35077bb1c71583b4bf2833ce67b66bdc95f9dbd30b5a0bc5c25863c376c08bc18054e3cea3578bd5681033f17ca303e38a72cbdba11f73b0000000000000000f68ef4bb43b2933ce727f53be6a594bb39ff873a2707a83a7eb7743cbc520cbd2da1a6bd8b3da1bbd30e003cf45aacbb49a0233bc8c67ebd6ecc053f0997113ea984c5bca257cb3b0000000000000000c3871fba19a41c3c36379c3c6473ef3b5e85f0bb51bd123bd810063cd05e21bd080799bd5a4432bdc68b8b3c94b613bcf1a3933c450589bd6942e93e94c57b3e451e5abdafc7423c0000000000000000d02884bbe7f0e13c36f39f3b10bfdcba773c08bbd7fc203b414fa73ca404a2bda0a78abd88f8b5bb67efed3b9fe1e3bbd821e83b649058bd86ab0c3f4f4af53d7ecfccbcb9eac53b00000000000000000d80bbbb9275b53c7a0b3f3a62b044bbd4a8413a9904873a77f5813c02dd58bd01158fbd457d823b66778b3b44cf5fbb505be83a4d7155bdc42b0c3fd9f2d03df2248abc01ef7a3b0000000000000000d02f443ab88b5d3c3cfb973c12fd9c3cd2e92fbce35d023cfab7513c09ed90bca2ffd0bd747427bda44063ba361034bc0bd7793cb217b9bdd825f13ec9d5783e68d44fbd3711b73c0000000000000000656ce8b9fae0ca3c2105c03b944721baabea86ba98dbc43a0886ac3c73e098bd25f279bd5f04653a3c25fd399da6cbbb09b2be3b17193fbdaf950f3f31efa83d981ca9bcb51cf73b000000000000000033a492389a907c3c2380b1baec490ebbbd6e6bb8f13d673a1318263c8ca685bd4d1d20bdc32cda3b7539323b433005bbea35253bcc79c7bcbe4f0f3fb2d63a3d8bab3abc8322f63a00000000000000001c4f173b4a6368bb010af23937a832ba297509bbd7dfae3a9efa96bb342c813c7b5a5eba67a4b13b21214d3ca16d21bb75f4af391178f53b3314903e2d663a3ee3c9d13bebb4a1ba00000000000000005c47e53a081699bb4249493ae12194bb199213bbb833de3a5668353b42a9943c2ef715bcbe26173cafeca13cbac04abb8ad4b5bbbb7f063d228db53e4a40b23db9c5b43be74d9fbb000000000000000041671e3a76c6b6ba864682bb9a78bfbb2a12a8ba8ced4c3a3edc0d3c4569cf3caefcf6bc8c84c83b5328ee3c1233fbbac4179bbbd6ab183dee81d03e7f522e3d578ce23b0bce79bc0000000000000000410a373a76d0d1ba5549763b26e3863b943a1bbba1b1e6397487c3ba51cb223cc7f9cbbc22d7a4bce8f2033c7d2029bba71e733bf135b1bce8899c3e56df813e373da5bc4ae49b3b00000000000000006a02ea3af35ce2bb62333c3ba05b4cb97b0103bb72ca093a3c0cfebb106bcb3cc4e5c7bc5efb61bc53225f3cb97567bba2cea23a6f8c60bb00c5af3e6c3e3f3e826a49bc77a826ba0000000000000000fcb5013b845f32bce98f4fbbe1f1c1bb9b88a4baa80f5f3a5ac99cbb72d3253dad9a99bc4c8f32bc67530f3d2795debbb9952d3b56e8483c8416b53ed610093eba976cbb35be70bc000000000000000006e81e39d9d0b139efe5523bbb7ffb3b20b49dbbdb513d3a9c647d397ae29639e5ef10bd57380dbd88a8103ceb2ea3bbac286c3bedca08bda25ca73eb30a943e3eee16bd7a54103c0000000000000000c5413c3724fdfb39e3470f3b394fef3bdf23acbbf91a903a85fd853a2bb91f3bb95c27bdfccc12bd5c7c823c8833d8bb072a91bad579e0bccb31b93e5adc823ef93629bd2cd02d3c0000000000000000b096d53abfdb4bbc5d97983a5fc9733a41dbc2ba3b56403a121238bc518b123d46e907bdd699c2bc4284ab3c61b6adbb3fd3d6ba502b243b73dabb3ec2603d3e475bbcbc895264bb0000000000000000596ebc39fa63de3a0a11eb3b858f373c5ef3acbb5e0cce3a765befb91d9bd8bb1d904cbd28204abd138a043c40d4aebb67c21b3c98fd42bd923fb43e4acba03e9f5c57bd98a43b3c0000000000000000daebd3babd1af53ba2df0d3bc392353c9f82e1bba5280c3b3d7e553b54ff5bbc4b5a51bd211b47bd4d74a53c382508bcd326533b333717bd9736c23e3d78913e024675bd469f613c0000000000000000364a71bb0002923bea061ebaa8b30d3c8fd5a2bbfaa2083b5defd83ab2adb73a3c1a4dbde61231bda013d83cded114bc5d0626bbee45b0bc04e1c93ea404753ed61455bdd9011c3c0000000000000000e5ae8e39eae3af3a93746c3c5a4f2c3c0f9f93bb727fc33a3d33ddbaef05e2bbe3c982bd043568bd5860363cc97e98bb3fa1893cc4df73bd8849bf3e03eea33e07bb81bdc4f83a3c000000000000000017ff4dbb0c534c3ca0b9ea3baed0e23b472ccbbbe7f1453b6cf34b3b3661c7bccc0486bd732830bd5c12b13cd41514bce4f5203c5d3c2ebd52efd23e407f8b3ebe3c8cbd480f5f3c0000000000000000b19708bc3d6c983c3d84413bb50bb73a824b2cbbd5a5113bea891e3c4eb8c5bcdfb689bdc4e70bbd65f3d53cdc9d1dbc50b8b7b934f6ffbc7906df3e23076b3ef84179bd9a8a4c3c0000000000000000fb83143be65e813a01e4a83c3845243c08f4debba14c213b703e94bbfe8261bc66ed91bdbb0d76bd09e8963c7af1e9bb8423c23c25f380bd3c07cb3e3e779f3e176b93bd5c15453c000000000000000021c302bb8f3e893c81063e3cd4f121bbbe780bbbd2f81b3b64fd943b634a42bdb1e08fbdf934d8bcc0f0b53c31c928bc94674a3c00de02bd8999e73e2a9c6c3e999d98bd0295683c000000000000000079eefbbbc679d73c8cfba13a60c2a0bbe149b03a32e5943a6db87d3ca7885abdcb7292bd57e905bc3c50813c1c3ef8bb1e13b4bb629895bcc9a2f43ed917393ec99666bdc9a65b3c0000000000000000533f5c3a8410d93b649ead3c0c6b0c3c1dabf4bb3d57433b3c07e5ba524bc0bcca40a1bd533459bd60f2963cfe1e01bc1a0bcb3c03f386bd368bd93e04ad933e395092bd75d1533c0000000000000000a5e796b8c294c53c2a5fa13bc53d97bbdfb2173aba01cc3a04dba13bd1938ebd3cde8cbd80d63fbb2a6b423c47881abcc7644f3ca656dbbcfa5f003f35fb2c3ee9b082bde1cb753c0000000000000000016c90bbacdcf33cb10d04bccf0ce1ba0fd4113ba3d6a73902c5873ccf0d9fbd136871bddbcb2b3ccd526d3b5593a8bbe3213bbc261b303a28a5023fc916fd3daa7233bdb0905e3c00000000000000000eafb4b89c30613c18b6843c19a5c63b35b202bcc4a55b3bdd661a3ba5ba1ebdd2529bbd179c1fbd62778e3cbc7d1fbc85d5a53c90096fbd1801e63eea2d7f3eb72b7abdfe51553c0000000000000000deab9f3bbe6fdb3c060368bb451109bb3fd37a3ab38dbc3abae2ae3ba223b7bd775167bda84b273c525b953b18b516bc795b043c912c66bc4f48093f3027e13df42441bdca155d3c0000000000000000dcc93b3b75d3d53c7ebe5abc6a058e3ab7d7043b0cc223b95108153c562db7bd70393abde2b8aa3c3ee61bbba50452bbb9ae15bcdb49603ceaa9083f998ea13d81fe16bd407e3d3c0000000000000000ced3603b2ad5383c5bffba3c9ae48c3c4de04fbcaaa61f3c083d103c1c4aa7bc220fe0bda0241cbde2d1853b8e323ebc553ba93cfb51b2bda239f13ec82f783ed0e955bdd4d1a33c00000000000000009acef53b72ddd23cf5061ab907f85fbaa7c21e3bd9ed023bcaec243cac36c8bdad3f33bd72515e3c01a257bb0e7e31bc17a3703b4ce1dcbb1b1c103fedf84b3d500dd6bcb5ad413c00000000000000000a4c3e3c1920883ca6685abc6b493c3b8e7059397f4b78b995e203bb3514c8bd757b91bc517b823c487868bb1c9a46b91dda78bbc921b83cd56c113f120c223c39dd56bcce4e833b00000000000000003a2b063b296e48bb23b3923ac30a78ba50c90ebbbfa99d3a3e1988bb410e663c0391cdba400ea13b6e8a473c9ffa28bbb0ad063a2654653ce7a98a3ef1e53e3e0bfde73baf0e0f39000000000000000093fe873a5d53e4bad36bbcbabae708bbf2d529bb7b81d83abd89e43a46d5313b09f87dbb1fc02b3cb0dfa73c71935ebbae1c8cbb52289c3d7a7da43e8f5dac3de74db53b9445c2bb0000000000000000f51c043ae5dc95bbff9abc3a4d9a0abbc771f9ba08d02d3a80761dbbf913ce3c5841b5bc9e537fbb1b47c93c73d2abba7eb0213b0d15ff3d6d5bab3e02a0273d9cfda0bbe5f83fbc0000000000000000be5a2a3a9e1ad5ba322c793b3f7a6e3b035015bb3371d4397fc2caba9ba4103cc154c5bc287da5bc9de5023cbf8524bbb3ed813bf98a9cbc1867993e7cb3833ee36d9fbc82009a3b00000000000000004283a03a28e4b7bb1614133bec8590b9aa69aeba03f3e839a889f8bbb9778c3c9b5f9fbc29d562bcbed25f3c3d5c92bb04a40a3b97ce713c9c99a33e8cd2443e41ea0ebc16f805bb0000000000000000f634963a6ab443bc26a292ba280800bb47b4b1ba13985b3a9d9278bb46cbed3c768740bcfc513abc15ddf73c7628f5bb12c5283c700a8f3d82dc923ebc71103e7dd19ab99d7595bc000000000000000069fe533989121ab98930763be9bcda3b1d7490bb71a1333adafdb2b9c2f42039ea0910bd9e030bbd97e8043c92fb9abbeaee9b3b909f05bd1c86a53ee96c953ea3ce14bdc76d063c00000000000000009c5b84394e919eb943c2833bd701983b39036ebb163e3c3a5bab62ba7bc071b9eda31fbdd01d0ebd0d12773c9e20c8bbcd6e013bd6789dbc5efbb23e0115853e973622bdd70ff43b0000000000000000197fa63a64ad2dbc4c826f3bb2ae81baabd5353a2b8eb839a9e10cbcce7c823c72f9e1bc85bbbdbc068ca23c4290d9bb8b55133bc338013de302ad3e35a6453e7362a7bc37a00abc00000000000000008ff98339aea6023b37e4f13b3d63273cde8c93bbffd0b23a6ed6c6ba2bd9e1bb9fbc4abd550447bd041bf23b931da0bbe256363cebea3bbd9171b23effdea13e9cb159bd3a232c3c0000000000000000b1cc7aba5455f33bcbc6633bab860b3c0503bdbb94aac93a53d366ba23b989bcc6fa47bd60523ebd2e05a53cfe31dabb29ed1b3cab57ecbc76d2bd3ee551923e406f77bd8bec0a3c0000000000000000278335bb7825d73bf260653bfe79013baecd92ba00c4913adf41003a303cacbca41616bdb2284abda35a0d3dc3fc34bca112223c2f0a0abc47b0c73ebcf16e3e964a52bdda32a73900000000000000001b08c03979eddf3a2a17633ca911273c88aa82bbc4b3993a9ce93bbbeb6fe6bba56481bd849c63bdeec5203cce686fbb7f68913c360e68bdfb71bc3eaed6a53e040584bdaa502d3c0000000000000000e4d16cbab835503cd79fea3b6b5fab3bb2afc2bb21b0123b5dfcbcbb650ce6bcba4b7fbd750022bd2b07ba3c9e46d2bbfd6e9f3c65fbe4bcc193cb3ea3388f3e2bb29ebd097cf83b0000000000000000db85a5bb9a04bc3ca780c439e79210bb0deb14bb823fb23af7ae17bb95b22bbd04dc5bbddce807bdf210093d3cf8e2bbf4148b3c115cfbbbb185d83e5842693ede0791bdf3a465390000000000000000cb21113b3af61d3b9098993c1b9f1e3c7b43b2bbb84de03a4a97d1bbc69561bc20d38fbd71d16cbd059d843c76c3bebbafd2cc3c259a71bdec3ec73ebbeba13ef0a097bd8c5f363c00000000000000004ecb8d3b1e0f663c310f213c0ab06ebbb7200bbb9454063bffbf56bca0414bbdf9d97fbd9ae3babcbd3cd23c15fa1bbc7fe2e63c9d6938bc868edc3e2d037a3e1b3cc1bd35d3213c000000000000000041efe63a9a81d53cb37600bcbc807cbb183bcb39feef723aee881ebc55f68bbd680446bda30a4dbb12adba3cec63dcbb2cd5503c25caf03c36b0e43e9ff53c3e1d4dadbdaf66ee3b00000000000000008c700e3b125eef3bba399f3c543e0d3c811cddbb174b223bfa6dd1bbb3e4b7bc09339ebd2c2456bd8545903c3c47e8bb3b36e03c758776bdd5ded33e4d57983ed12e9cbd0ca4493c000000000000000021192a3cecd9883c2811083bb9c1cebbfbf43d3a5c680f3bc247a9bc58d88cbd9fe861bd0f300b3b1bcd953c5ef344bc0c90fd3c6664b93b2e34f23e9c793a3e9700c6bd096b7b3c0000000000000000c04d343c3c83923c3a7168bc970f313954df1b3b9a40ce38811089bc12fdb7bd88b5c9bc8ffa8c3c67a5de3b3eddd2bba7cf06bbca67a33d40b3eb3e1c5dfd3d5376a8bd981b893c0000000000000000654eb13a87dc7d3ca30e6c3c665ec63b48df04bc817c573b3b87b2bbdc4610bdf7d39bbd06fe1bbd60df903cb1e914bc025ad13c167054bd7066df3e0e99853e7a428ebd270e493c000000000000000077ee853ccf6e8b3cfed5cfbb7e4e52bb96db953af491393b7b91d9bcdfd7a4bdf5a634bd4b3b923c3baf183c540964bc9270db3ca773bf3c7e1a023fe9dbef3d8a8bacbd418d9a3c00000000000000001c3aac3c63cda73bdf6d53bc2452ce3a47216f3be16f01ba94c3dbbcb88fbdbdcbe74abc54cde33c527938bb5010bfbb8ca606bcc04bdf3dce12ef3e2aafae3d0a15a4bdded6b13c0000000000000000ba15bd3b5504383cc9a1cf3cb853873c5b3054bc1ed2433c3e9eacb730599dbcfa2ce3bddba62fbdeae9133cddce2dbc65faf83c34f9aabd1a54ea3e6080833ed1fd70bdcc11683c000000000000000029d98c3ccfb6c33cfe5b8dbb134e22bb61850d3b2e44b53ba538dfbcf111aebd6cd40fbd0610ab3c0eb8edba616388bc3857a73c232bb63cccc20f3f9d95073de8c74fbde3ef853c000000000000000047e9dd3c347dfeba513b46bc6724b63bb140783a362be2b8e89b27bd06adadbdc347893bfbeaa43cfc1427bc0dbc05bb138443bce511fc3dfbad023f951240bce29101bd558c823c0000000000000000dfe8df3aaf2f22bbd66e2e3af071fdb8975605bb4054a53ab70fadbb4bc84b3c7b3c8539fbbaa83bc031433c517e60bb3229073b9a0e8a3cfb67833e3d02483ee660063cc383603a0000000000000000d1a5ed3aaed42bbb81f5cfbab993163adba06fba796fcf3a0ea489bc28af5dbaa1daf13b2ed2643cd07a833c38bbabbb62c00b3cf827063ee1d5863e2a8ea83dc680d23b5300a3bb0000000000000000ea39c7387df528bb592811bb9d9ca6ba3920a939947d78390255e5bb7c3669bb8a92223b057c183bdcecc63c3e4e82bb1533963cfaa0693e250f5a3e7bc2253d64cf583b51824abc00000000000000001eeb023af215c9ba2ab8733b5992613b1bc8fdba2d86ba39b6c6e9ba1f4e003c11f3bcbcf6eca4bc039ffd3b70662bbba83f933b16858ebc3df4953e4cce853e38bb97bc5b95993b000000000000000045635f3a1ca68ebbadb5bc3a0cea9538e07a73ba1505d3392aed0fbc39ef3a3cea4752bc253d44bc1f9b363c50bdbcbb04e48b3b21ccdf3cf431953ed70e4c3ef960c5ba264ebcba00000000000000006250253ad5d41dbc98a50fbbb1f95b3ae68955ba8bf0303adc6966bcd05b973c3df6683b6de73abb00caa93c45622bbc41f9853cc0e3093e23705e3eebd2063e39180a3ca58758bc00000000000000002ade4339333706ba6383873bb270c03ba03b77bb6ba20b3a5c71a3bad983083a58570ebd09b308bd4301e73bf0a48ebbd8ddbc3bbd1a01bd41fba23efc0d973e0cca12bd7e4c023c00000000000000003897ce39b9cd70ba798f963b0762423becb111bb982dd339765834bbbe4a0fbbe2eb0fbd7e6607bd9e12553c31aec7bb40f0af3bbfcc5fbcbdd7aa3e83b7873e66d80cbdf49fa13b000000000000000066ccb23a860515bcb87dc13b10116fbb2ee34d3be8e0d6b78c0c20bc81fbdeba036685bcff30b7bc8b1a8e3ca34e1dbc86251d3cff674e3dab7d9d3ea4554c3ee5112cbca1eb42bc00000000000000008e7aea39bc99b63ad958f33bcb291c3c564777bbce4c903ae71622bb178acabb5f3c47bd2d6243bd83b6bc3b680089bbb17f463c4c393abd9a26b03ec047a33e4e3c56bd63c0233c00000000000000003167edb94136b53b8c969d3bdbe3c73b76ac95bb47e4853aef1f90bb701c87bc904e36bdfdae32bd6aa08d3ce8449ebb32bb773c1642c7bcfa42b63e5266943ee63d64bdb891533b000000000000000052a68639c8caa0ba0c9a783c2f5505bca7a47b3be4424fb944177437231320bd90bf90bc914065bd0e60213dfd4059bc33e5bd3c586e26bbda2cbf3eda876f3e99892abd83dc1abc00000000000000000ac9ef3973a9b43a74bd573c75a8263c0ac067bbc50c793a235f6ebbeda1babb38e27dbd5dd561bd37b90d3c29204fbbabfe943c5a4064bda080b93e5bcca73ea37f84bd9d1d2d3c0000000000000000e9dd27399ac72f3c36b9eb3b8e17af3b7a14c6bb4c8ed63a20b954bc37e1d0bcd0d869bd0fe121bde3eaae3c664150bb34e1f13ce632b5bcdf4dc13e5d3b953e9a4ba0bd831784b90000000000000000e579c8b7dd99873cb09f753b94cfaebb87ffe6bacd38473a9379a7bc1a6638bdc4f51ebda16cf5bce75c093d67c480bb5e6b293d57d8243cde38c73ed098753e097f9abd026f69bc000000000000000037c7e93a35f10f3bfd4a8b3cea59243cd14996bb0e15a43abb13f0bb05d11ebc57748dbdc8456bbd87d9693c2e8298bbc5f4cd3c18246ebdda24c23ee38ba53ed32496bd442f243c0000000000000000e684c73b7183253cddd81c3c565579bae2069ebbf790173b8a1dc9bcf14c1dbdeed36ebde801e2bc937eea3cb492dcbbdc712f3da40b1fbc5fe8ce3edf36893e7302d0bd41a3803a0000000000000000093b453cef39353c46aee5bbbad768bb708087ba0870843a9e5c49bd13c04cbd6920f1bc9893293b6bd6cb3cbf4a87bb74fd5b3ddb775e3d9788c73e6e2f583ecf9fdcbd229f09bc0000000000000000bf8f4d3bbcfba73beab99b3ca34e163c29f8b9bb2f5e113b79ff1cbc4c3d88bc18209cbd711a59bd1863703c343ccdbb2eb4ea3c53f974bd59dfcc3e4c009f3e013e9fbd2a18493c00000000000000002397743c11d0063c1fc0ce3b3ec3c3bb2a9439bb277f743b84ac1fbdc81b43bd1bd763bd4926abbbf474e33c8cf63ebc65274e3d8fa2fe3b56dedf3e0494633e7edaf4bd0457123c00000000000000004767c83c5163a8bbf25b1ebc8d65d0ba86c3fd3a6867113aa64395bd18f756bd2c5cc4ba6e4aa13c608b6c3c08e5f6bb96d7503de8a8e53d0f9ec73e30551f3e1bfe01be6cfb033c000000000000000098ad673b7ca5423cbbb3773c8218d93bb5a2cdbb1e2d193b90662bbc67afe2bc52559abdb76126bd6a2e733c947cf4bbe22be83c548750bd773ed63e17be8e3ede5a94bda3c6383c000000000000000005a6ae3c2435253c6c6aa2ba5b649abb58187bbbf302d53b052342bd0bc250bd75685fbda3374b3c6cc0bc3ca11389bc7c593d3d1324c33c3ab6f13e122e2a3e815cf4bdaaba8b3c00000000000000003b56113dbe509fbc1862f6bb8b2328ba1711833b1e7ec939950fb0bd6b1d3ebd0cccf23b11ece93cc065d93befb424bc54ea333d7211153e7b76c93eb31dfa3db97910bed8fdc03c0000000000000000ad87c63bc046413cf547d03c7fb68e3cad322ebcc513493c45f4c2bb7c2471bc0ec3e0bdffdd51bd96455e3c7e5859bc40b00e3d2633a1bdca0fde3e043b913e2f218fbd3b617c3c000000000000000038e7be3cadf0c33c9de6ec3a204ca3bbd6a1b4ba8277173c820150bd4bbc1ebd59af88bde8e3843c56083b3c11f8b7bce428e23cc10ac23ccc18093f85f0a33ddd4dbbbd42acc23c0000000000000000f389343d0928cbbc41a2bbbb5b44623aa3db6b3bef30ee3aa148bfbdf8d209bd13b3f43b7b83e93c6e3624bb05355fbcaa86503cd5d4503efdbcd23e3104033d0bf4e6bdc569233d000000000000000048a6ca3a42acedba09ba5e3a5b55b2b5a5b0fbbac907a43af3dfbbbbad473b3c7ecbc33a6afca43bca0e483c7cab89bba9a6443b9146903c0ccf773e530b533e9586273c8241703a0000000000000000f336c13a94ff57bbcb3857ba4be4be3a56a9c13885f9a73a75f29abc8c863a3ac592893cc2588c3ce0042c3cebca0bbc55ceed3c12a4d93ddbab663e5ec0e73db8f3c73b6285163b00000000000000000ff6d5b7a9a4dcbb416d703b2888663bc7e5df39e39532398463d7bc06a3ed3b05e1eb3c30fd183cffe1be3bd73d81bb7314f33d80702a3ee1a10c3e6368883de6670ab97f4833bc00000000000000000816eb39a48cccbae0a2683b97c4523b0ef3f5ba6c12a739755306bbaa46f33bd473b2bcfe25a5bc4a9cf93b53bc27bb0bd29e3bc05085bc1e11923ee35d883e518f8fbcd4439b3b0000000000000000c24b0b3a25b436bbbf4f883a1b90043a72ef31ba19f2a6390ab616bc8a09ef3b54360cbc97de0cbc5eaef63b31a4ecbb89dcf53b1ce5dc3c1896873ea4d0583e7fcff63be102a73a00000000000000009f285b39cf8fe5bb2fc9b3394f42983a80e7afba918cab39d6bec3bc5c98cb3b5764783c46d8513c9f9b3c3c89c95dbc1c57633dd7b7bc3d6ee0423e3ed1143ebf48b63cac9ef5bb00000000000000006cd8863953fe8fbaa7aa8f3b0ce0a63bfeee3ebba28ee339d0b41bbbe664c33a6b080bbde31107bdf5a2b73b593b81bb9e08e63b5cbe01bd1a46a03e46ea983e77c10dbdc18ff73b0000000000000000e7cb8f398a536ebad12e8e3b6592123b2499b6ba9255723985cda0bb5a05c6bab94903bdc4e4fabc9edb143c7e1acfbb2c13023c59783bbcee28a13e095f8b3e4d1cd8bc433a923b0000000000000000b2a1463ab86fb2bb1c57883b6273deba8b1e133b1d7326b889f95ebc2c3208bc70c728bc2a457cbc35a5053cc4823ebc1a37903c84513b3d98cf8d3ed6ca5c3e9e83813b1bb10fbc0000000000000000a750123a48c49d3959ec003c93520e3cde503fbbe3fb7b3ad4aa3fbb175f94bb0f0243bda8fd3fbdef085b3bb66c6dbba600473cf3603abd96f2ac3ea836a53e30b44ebd8ea0253c0000000000000000c33492b9ca11403b57e39f3b6c63a23b9b8f4ebbe843243acd0ed2bbe12e3fbc577924bd8b3d23bd36e02f3ccb2984bb3951873c804bc0bcb040ac3e63c7973e1e903dbda114ea3a0000000000000000cb30a639fbe90bbbf97e363ced8661bbdf5def3a9b42b0b9eb5c19bcaf2bd4bc478fb0bcb09925bd943eb13c8e110abcc638de3c4802fc3bb3bba93e48ad803ec55cedbc64c844bc00000000000000009d4d303a44878f393038463cb18b2d3c10cc47bb7f063d3a41366abb9d1e38bb22a275bd924463bd0849d83b06e30abbe93b8e3c37b867bdb89bb53e5c89aa3e2b4f81bddae12d3c0000000000000000fdca85b94fd6d23bf7dbfb3bf576c73b1efb94bbb8f54b3abf1148bc1e928cbc66b856bdf49a2abdb96c6f3c3ca425ba7ea6ee3cc632d8bc6025b63e02ae9c3e5dc98bbdb2ff42bb0000000000000000231cbeba641b173cb97fc43b24be0fbb05e26dbb11372c3a8b2503bdc667fabc6a9b11bdcf5ac5bc3c06d63c4da54e3b1a01823d8448783c7d71b13e8eff853ef23190bdccc003bd0000000000000000a65f94b836c4f13a9981623c5b3b1c3cd0af31bb1c76abb9b53092bb978f1cbb00be86bd0c296cbdd8ad4b3ce13bd7ba8497a43cb7606cbd2ad9ba3eff00a93e2bcf8bbd118d073c0000000000000000fa661e3b4ee9e13b8c982b3c7980483b1637a8bb98c97a3a407699bc6886bdbcd3c971bd576417bdedf4c33c5f1ae9babff51c3d8f9bb0bce743c13e0f85973e57afb7bd97c260bb00000000000000006fc0113c2297a33bcf92f3ba5c6952bb189c9cbb9d25c53a902d84bdfb750dbd54e1b3bca9a692bbd05b0e3d8eb1913bff44d03d8883253d1ab4b43e23fa763e0f23e1bdab813abd00000000000000001fb9553bf95f383b2b0b8f3c73d42e3c11ab88bbaa6eeb3aaa4331bcd1a420bcb43c94bd183167bdb574373c0f73c1bb0ef2e43caaf07cbd2a65c43e4fcba63ef6fa9bbd14f5533c00000000000000004c4e233c4627ac3beff3463ce14002bb33ca9ebb6076ea3a4659f6bc9ec1fcbcbfea81bdbe3bb1bc0d1ce93c9a36b0bb8bfd343da499efbb9eb2ce3e784e8a3e49deeabdb1ba953b00000000000000004457d03c4cc434bc7367ddbb9ca14fbba00d66bb245a163b09ebc6bda755e5bc929a6fbabe426e3cb6060b3d91bc00b9fa1bf03dd609ad3d363db53e5b194e3ee6e217becd3e0cbd0000000000000000a8da8f3bda23ed3b49617c3cddac013ce37258bbaf206d3a608c46bc4e869bbc28e491bdbe7f39bd0131203cb360cfbbda45e13c36df5abd587aca3e948b9a3e1f3294bd71ba4e3c000000000000000096e28c3cdec3fc3b8e24143c873546bb1f7401bc034b823bca0c15bd9f2a17bd92a88dbdee47c4bbdd09fd3cc4c735bc45081a3d614e383c8cd9dc3e6e006d3e13adffbd3e4b733c000000000000000049b2243d525bc6bc07f8c4bb9091a5bb7c0b15bb0efc523b9b68dfbd31b9b4bcac837dbb1503023d4138f03c7574a3bb3e37df3db6f3e13dbc7ec33e24a8283e26063cbe4f4316bc000000000000000061c8743b64a7283c3928d83cf38f843c0dd1b8bbab6a0e3cb8a30ebc21c20abc4e3fd4bd502182bd81069a3c316e88bcd6010a3d6f6691bd56fdce3e7d89a13e36aca4bdc7d0a73c00000000000000003952b73c1380b73cb42f1a3c121b0c3cf4ad30bc8bea323c5c3022bdd5ba03bdc422acbdeb0437bc76b5a13c9b61bfbca12d093c4698243d9d7eee3e2b08323e0f2bebbde7990c3d00000000000000002075633ddd59f2bc91725dbb24b214bc27f72bbbe356b53b0872cbbdc32caebc58d79abcac824b3d542ae43c84dea9bc91bd263d77c55a3ea337dc3e30a66e3db38a5abeb681173d00000000000000007996bd3ac338f3bafc91633aedc4aa38d4d102bbb0c8b23acc13b8bb6c2a3e3c8a783b3bd0fc933b84e83d3c20029dbbf036413b2192813cf2486a3e6fcd5e3e84ee563cfaaeda3a000000000000000023e9633a9e2c29bbf202613a11e47a3a14e6debaf561693aa12e59bc1f91133ca571883ce9488b3ca5304c3cd03e02bc3985bf3c2cae663d9b30503e60cf1d3eb09c9f3c31cf263c0000000000000000e034adb85c71cebb50c73d3b0ea89a3b6b591c3b03550c3a70cebbbbce3278bc5f525e3dee8b203dacb210bc6bdf2bbc7291143e5f341a3e0d4af13d8e13323d2479e0bb4335f7bb00000000000000009d70c4391ce0c8ba2c825b3b9c615a3bcdc3e1ba8a4dbd393fd71bbb571feb3b7e74abbc2999a6bc72c1f53b84ce2fbbea14a53bac9f82bcea6f8e3ed71d8b3e51b186bcb782a13b0000000000000000bc58a639c213ceba34c97f3a2aa1773ac82673ba9e7a903914ae13bc42b7993b2f6bcabbf7f4cfbb4884a73b6e130ebce2d1f93b092bbc3c3fab783e0e88673edb96803cf0f3a83b000000000000000010c3fc37ab3256bbde87073b5639fa3a688fb9ba5c9bcf3862a59fbc9b825fb95363a63c530a9c3c3c0c0eba7e1083bc5d1d543de4ca5d3d9f81393e70012a3e5cded83c3d6c923c0000000000000000c114a039a27ee0ba4b7a933bddc49b3b464217bb26eec739933755bb39733d3bb79108bd2f6107bd90c0893bca587ebbbc4def3bd5da02bd698c9d3e16f39a3e28bb06bd1d69fc3b0000000000000000dce63539b62e75ba459e673b3bee353bd96f8bba83c526393bf7d7bba833743a7a61f2bc6455ecbc9465993b930ee7bb5d24093cd02c51bca18e973e896d903e5e2396bc255fd33b00000000000000001c6ea0380adaaebaf080ea3a1549833af49deb391897923731ab85bc88d914bc1f6beebb765008bc25913bbb2b016bbcb7cd933cc6881f3d652b7c3e9fdd673e59d4b43c9bbd913b0000000000000000c2832c3ae62c3bbab1c7023c9b95063c3d4df3bad2053d3ae4ca4abb17861cbb41f33ebdbd363fbd8724053aa6a144bb9dda3c3cd9e13dbd94f0a93e547fa73e10e146bdf0ac2d3c00000000000000007cb2fab7b3ba2c3a41758f3beda28c3b403f9abaa0757939827fe1bba8a0a2bbd2f516bd62de15bd68c1233b924bacbb0f06553c19c7d5bc8c5ea23e52e19b3e55240ebd6177c13b000000000000000021b380b9ad68e3b840897e3b5f21193b2d79e439ba0f44b9ba7082bcf2601fbc3799bbbc7c4fc0bc71b466baf70e1fbc9affb33c89cf033cf3c2923e7202883e22c9f1bbb02bce3a0000000000000000d2558039efc6ddb976072b3ce870303cea1309bb1e5b023ab52b07bbe651833afc656dbddbf962bd967f6c3bdebeb9ba40a06f3c12816dbd990fb13ea56aad3e2d4376bd7cb3403c00000000000000008c56abb9d0730f3bd1bfde3bf5f4d83b824fc6ba0efcceb7cf38ebbbed4d06bc7fa43cbd0ebf31bd10b8503ba863daba814e9c3c3a9f12bdb038ab3ec36fa33ed5a051bd57027b3b0000000000000000025e5aba247dec3a8fc28a3b84d82b3b791a8cb974767fb9ce76d6bcbe907dbc3fdbcebc929fc0bcb0999f3baccb07bbece6433dbfde5b3b96239a3ecf398e3e3c4d06bdbfa98abc0000000000000000fd8b8dbb0d59df3a5206ea3b01eabc3b7e99d4b7e3f685bbef39503b380b683c920279bd9b316abd13b1933c286f9c3ba985ef3b61dc60bd51beaf3e2ed9a93e29fe6abd8ae9d43a0000000000000000666855baa4a94d3b1460013cfe87b93b43ffbdba90e17aba46c307bc98e399bb633a5ebdfd433cbdb42e4c3cef44a6b9ba85b03cbb5f18bdcadeb13e1b12a33e70e081bd0d27443a0000000000000000b6d72a3ae1dd093ba8ec983b697de53a6f7d85ba613b03b9a94b3ebd0541c6bcb6f6cabcd6f999bc15c0963c58c7c63b33a5ba3d9a1e823c68d2a03ec7968d3ecbd88abdb02945bd0000000000000000092f4a3aee3d9f3a0d78613caf003d3c84e0b1ba968fffb6b6c3d7bb2d8bfab9624c87bdcd6176bda5d9e63b165276bb4b0ead3c7c5a85bd49a8b93e442faf3e563891bd17a9683c0000000000000000a210093bbe46453b93e5233c155fab3bef62daba607e26ba254359bccd355bbc2b0465bd664721bd5eda393c88be01bbac08e33c80750dbd9011b93e0feaa03e3c89a6bdf9c0e23b000000000000000036b9333c73e65dbba716343ba0e0dab8f24b1dbba34e1a3a94faa1bd10cafabc215fb8bc04b563bbc83b113d82113e3cbbb30b3e50c6533d78a0a73e66fe843e4c90fcbd82ef92bd000000000000000018bf5a3b72a03f3be8d6573cf6342f3c9d4266ba581c9f3a4dae17bcb51c14bcfbfe7fbd9f5c55bde510843ae32db9bbfe95b83c5b3575bd3f7dba3e6e04aa3e5db688bddf51733c00000000000000000f22163c69537b3bc975213c1a35893bfe206cbb6ca6f83abf6cadbc109cb0bc26776ebd15b7e9bc9d60343c38f2fbbb83e9e23c6e26bcbc2fd6be3e44ea983e9e4eb6bd75c1603c00000000000000000f2ae63c33250dbc655bd838d42825bbe97cc7bb7ba59f3abcefc8bdaabe2abd1a48e8bc5c61653cb7303c3d15fa593c79b4143e5ed9a83dad45b93effff6e3ec64533be9e6985bd0000000000000000eeb63d3bfa99343b45fdda3c3e71bb3c10de02bc17850b3c0d0a21bc86abdb3b3f96bfbd3425a6bdc949a73cad447dbcb6c6e13c3e8d9abd78c0bf3e4665b23e4363a4bdcf73b63c00000000000000003ecc773cdb1d323c6292ac3c796e7e3c55b7d538a7b6f23b7340a9bc1f5402bd86458fbd6de94bbd4481b2ba59a965bcc436da3b94a9a63c6157bc3e37fe8a3e55ce8dbded34a73c000000000000000093861d3ddc15043ccd20953b4c6010bcd6505cbbe6d007bc848968bdcee2d7bd364081bdf62f6a3d837b193d3410613c66fc7a3dbf235d3ea1aeda3e8ad5f53daa6e50be9b6f0dbd0000000000000000
